如果您有多个具有相同内容的表单元素name
在表格中,条目elements
表单上的集合最终成为这些字段的集合(这很方便)。 DOM2 HTML 规范涵盖了elements收藏 http://www.w3.org/TR/DOM-Level-2-HTML/html.html#ID-76728479但当存在多个同名字段时,似乎并没有立即指定此行为。标准是否涵盖了该行为(DOM2 HTML 规范或其他规范中的其他地方)?
为了清楚起见,我并不是在问访问这些字段的最佳方式是什么。我想问的是,它们最终是否会出现在(不同类型的)收藏中?elements
集合受标准管辖,如果有,是哪个标准。
例子 (实时复制 http://jsbin.com/ifudop/3):
HTML:
<form id="theForm">
<input type="text" name="foo" value="one">
<input type="text" name="foo" value="two">
</form>
JavaScript:
var form = document.getElementById("theForm"),
foo = form.elements.foo,
index;
console.log("typeof foo = " + typeof foo);
if (typeof foo !== "undefined") {
console.log("Object#toString says: " + Object.prototype.toString.call(foo));
}
if ('length' in foo && 'item' in foo) {
console.log("Looks like a collection of some kind:");
for (index = 0; index < foo.length; ++index) {
console.log(index + ": " + foo[index].value);
}
}
示例输出(适用于 Chrome):
typeof foo = object
Object#toString says: [object NodeList]
Looks like a collection of some kind:
0: one
1: two
我检查了 IE6、7、8 和 9、Firefox 4.0、Firefox 3.6、Chrome 12、Opera 11 和 Safari 5。它们都在elements
某种集合(Chrome、Firefox 和 Safari 使其成为NodeList
[虽然奇怪的是在 Safari 上typeof
是“函数”而不是“对象”],IE 和 Opera 使其成为HTMLCollection
,但他们都有length
, item
, and []
使用权)。我只是想找到指定行为的标准(如果有的话)。