Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/80.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript jQuery form.id vs form.id.value_Javascript_Jquery_Dokuwiki - Fatal编程技术网

Javascript jQuery form.id vs form.id.value

Javascript jQuery form.id vs form.id.value,javascript,jquery,dokuwiki,Javascript,Jquery,Dokuwiki,我正在开发dokuwiki插件,我发现了一个有趣的想法,想想js是如何存储元素id的。我不确定到底发生了什么。。。因此,我有一个来自dokuwiki linkwiz.js文件的代码,用于确定“:”字符是否位于id字符串的部分: dw_linkwiz.textArea = $editor[0]; //some code between // prepend colon inside namespaces for non namespace pages if(dw_lin

我正在开发dokuwiki插件,我发现了一个有趣的想法,想想js是如何存储元素id的。我不确定到底发生了什么。。。因此,我有一个来自dokuwiki linkwiz.js文件的代码,用于确定“:”字符是否位于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对象。正如您所看到的,为了获取元素的id,他们使用form.id.value,但在某些情况下,当我使用jQuery.attr方法动态设置元素的id时,form.id.value是未定义的,id字符串只保留在form.id中。你知道为什么会这样吗?哪个编译器更标准?

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

在本例中,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
是“some:page”。

如果
dw_linkwiz.textArea
是一个jQuery对象,那么
.form
应该是
未定义的
我想表单中有一个“name”属性为“id”的字段吗?这对我来说是有意义的,这意味着
form.id.value
正在获取名为“id”的输入字段的“value”属性。@ExplosionPills注意jQuery对象被取消引用:
[0]
@Pointy哦,我真傻。我以为他的意思是
$editor[0]
本身就是对象,实际上我开始认为这只是一个bug。