gpt4 book ai didi

javascript - DOM 中反射(reflect)的同名表单元素

转载 作者:数据小太阳 更新时间:2023-10-29 05:34:15 24 4
gpt4 key购买 nike

如果您在一个表单中有多个具有相同 name 的表单元素,则表单上 elements 集合中的条目最终将成为这些字段的集合(很方便)。 DOM2 HTML 规范 covers the elements collection但当有多个同名字段时似乎不会立即指定此行为。该行为是否包含在标准中(在 DOM2 HTML 规范或其他规范中的其他地方)?

为清楚起见,我并不是在询问访问这些字段的最佳方式是什么。我想问的是,它们最终出现在 elements 集合的集合(各种类型)中这一事实是否包含在标准中,如果是,是哪一个。

示例(live copy):

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 = objectObject#toString says: [object NodeList]Looks like a collection of some kind:0: one1: two

我检查过 IE6、7、8 和 9、Firefox 4.0、Firefox 3.6、Chrome 12、Opera 11 和 Safari 5。它们都使 elements 中的条目成为一些集合kind(Chrome、Firefox 和 Safari 将其设为 NodeList [尽管在 Safari 上奇怪的是 typeof 是“函数”而不是“对象”],IE 和 Opera 将其设为HTMLCollection,但它们都具有 lengthitem[] 访问权限)。我只是想找到指定行为的标准(如果有的话)。

最佳答案

它包含在 HTML5 规范草案(和 WHAT-WG 版本)中,在这种情况下,它似乎更多地是关于记录它如何始终工作的,在 HTMLFormControlsCollection 部分( W3C refWHAT-WG ref ):

If there are multiple matching items, then a [HTMLFormControlsCollection (W3C ref, WHAT-WG ref) object containing all those elements is returned.

关于javascript - DOM 中反射(reflect)的同名表单元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6504372/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com