【发布时间】:2023-03-29 05:59:02
【问题描述】:
如果您在表单中有一个表单元素并且该元素具有name 或id,您可以直接从表单的DOM 元素中访问它作为具有该名称的属性。这种行为似乎得到了非常广泛的支持。它是否被任何规范所涵盖,如果是,是哪一个?
DOM2 HTML 规范中表单的elements 集合is specified 的这种行为,但我没有立即看到将元素作为属性转储到任何地方指定的表单本身的业务,除非短语 "它提供了对包含的表单控件以及表单元素的属性的直接访问。” here 的意思是说(如果是这样,哇是那么微妙,我读它时指的是 @987654329 @ 收藏)。我猜这只是遗留行为。
为了清楚起见:我不是在问访问表单字段的最佳方式是什么,我是在问这种行为是否包含在标准中。 (我还避免将所有事情都倾倒在 window 对象上;这是另一个话题。)
示例 (live copy):
HTML:
<form id="theForm">
<input type="text" name="field1" value="foo">
<input type="text" id="field2" value="bar">
</form>
JavaScript:
var f = document.getElementById("theForm");
console.log(f.elements.field1.value); // "foo", per spec
console.log(f.field1.value); // also "foo"
console.log(f.elements.field2.value); // "bar", per spec
console.log(f.field2.value); // also "bar"
我检查了 IE6、7、8 和 9、Firefox 4.0、Firefox 3.6、Chrome 12、Opera 11 和 Safari 5。他们都这样做了(使表单字段在两个地方都可用)。
【问题讨论】:
-
我很确定这是对原本是 IE 非标准行为的东西的剩余向后支持
-
@Gareth:谢谢,我想我记得它是从 Netscape Navigator 2 开始的,所以这可能不是微软的错,但可能是 Netscape 从 IE1 复制过来的——有很多来回在第一次浏览器战争的那些令人兴奋的岁月里。 :-) 无论如何,它是in the process of being recognised in a standard。
标签: javascript dom