0

我正在研究 dokuwiki 插件,我发现关于 js 如何存储元素 id 的想法很有趣。我不确定发生了什么......所以我有一个来自 dokuwiki linkwiz.js 文件的代码,用于确定 ':' char 是否在 id 字符串的一部分中:

    dw_linkwiz.textArea = $editor[0];

//some code between

    // prepend colon inside namespaces for non namespace pages
    if(dw_linkwiz.textArea.form.id.value.indexOf(':') != -1 &&
       link.indexOf(':') == -1){
       link = ':' + link;
    }

$editor 是 jQuery 对象。如您所见,他们使用 form.id.value 获取元素的 id,但在某些情况下,当我使用 jQuery .attr 方法动态设置元素的 id 时,form.id.value 未定义,id 字符串仅保留在 form.id 中。你知道为什么会这样吗?哪个更符合标准?

4

2 回答 2

0

在这种情况下,id 不是元素的 id 属性,而是表单中名为“id”的字段。

简化后看起来像这样:

<form>
<input name="id" value="some:page">
<textarea>the editor</textarea>
</form>

dw_linkwiz.textArea是 textarea 的 DOM 对象。dw_linkwiz.textArea.form.id.value是“一些:页面”。

于 2013-03-07T22:17:45.447 回答
0

通常一个 DOM 元素 id 将是一个字符串而不是一个对象,所以form.id将是一个带有id值的字符串。它不应该是一个有值的对象。这个插件可能已经定义了另一个具有 id 属性的对象,该属性包含一个 value 属性,但这不是标准的 DOM 元素。

于 2013-03-07T16:29:10.710 回答