我有这个simple 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
的 Prop 无法直接访问这是为什么 ? .....实际上,这意味着我必须了解所有form元素的 Prop (以便不向后代元素提供保留的 Prop ID)?
最佳答案
这与getElementById
无关,与HTML表单元素对象的属性无关。
它不是“保留”的,只是默认情况下定义了一个值
如果您在表单中有一个表单控件,并且该控件的ID(或名称)与表单元素具有的属性相匹配,则对该表单控件的引用将覆盖该属性的常规值。
— http://www.w3.org/TR/html5/forms.html#the-form-element
这很糟糕,但是自从出现这种情况以来,表单的DOM便一直有效。
由于该特定属性映射到属性值,因此可以使用getAttribute
和setAttribute
来操纵它。 (这在旧版IE中不起作用(该旧版IE对在属性上运行的方法进行了错误的实现),在某些其他属性(例如Submit方法)下也无效。)
是。