Javascript jQuery form.id vs form.id.value
我正在开发dokuwiki插件,我发现了一个有趣的想法,想想js是如何存储元素id的。我不确定到底发生了什么。。。因此,我有一个来自dokuwiki linkwiz.js文件的代码,用于确定“:”字符是否位于id字符串的部分: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
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。