我有这个简单的html标记:
<form id="form" action="lalala">
<input type="text" id="action"/> //a reserved property name id
<input type="submit" id="submit"/> //same here
</form>
但是-正在运行:
alert(document.getElementById('form').action);
警报
而不是应有的“拉拉拉”。
似乎getElementById
无法直接访问的道具
这是为什么 ?.....实际上,这意味着我必须了解所有form元素的道具(以便不向后代元素提供保留的道具ID)?
这与getElementById
HTML Form Element对象的属性无关,并且与它无关。
保留的属性名称ID
它不是“保留”的,只是默认情况下定义了一个值
如果您在表单中有一个表单控件,并且该控件具有与表单元素具有的属性匹配的ID(或名称),则对该表单控件的引用将覆盖该属性的常规值。
当对表单元素进行索引以进行索引属性检索时,当使用给定索引作为其参数调用时,用户代理必须在元素集合上返回由item方法返回的值。
— http://www.w3.org/TR/html5/forms.html#the-form-element
这很糟糕,但是自从出现这种情况以来,表单的DOM便一直有效。
由于该特定属性映射到属性值,因此您可以使用getAttribute
和setAttribute
操纵它。(这在旧版IE中不起作用(该旧版IE对在属性上运行的方法进行了错误的实现),在某些其他属性(例如Submit方法)下也无效。)
它实际上可能意味着我必须了解所有form元素的道具(以便不向后代元素提供保留的道具ID)
是。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句