HTMLCollection - 元素的通用集合
HTMLCollection
接口表示元素(按照文档中的顺序)的通用集合(类似于参数的类似数组的对象)并提供了用于从列表中进行操作的方法和属性。
注意: 由于历史原因,该接口被称为
HTMLCollection
(在现代 DOM 之前,实现该接口的集合只能将 HTML 元素作为它们的子项)。
HTML DOM 中的 HTMLCollection
是实时更新的;当其所包含的文档结构发生改变时,它会自动更新。
方法
HTMLCollection.length
只读
返回集合中的子元素数量。
方法
HTMLCollection.item()
根据给定的索引(从 0 开始),返回具体的节点。如果 index
超出范围,则返回 null
。
HTMLCollection.namedItem()
返回其 ID 或(作为备用)名称与由 name 指定的字符串匹配的特定节点。只有在 HTML 中,引用的元素支持 name
属性的情况下,才按照名称进行匹配。如果不存在给定名称的节点,则返回 null
。
在 JavaScript 中使用
HTMLCollection
也通过名称和索引直接将其成员公开为属性。 HTML ID 可能包含 :
和 .
作为有效字符,这将需要使用括号符号来进行属性访问。目前 HTMLCollections 不能识别纯数字 ID,这会导致与数组方式的访问发生冲突,尽管 HTML5 确实允许这样访问。
例如,假设文档中有一个 <form>
元素,其 id
是 "myForm"
:
var elem1, elem2;
// document.forms 是一个 HTMLCollection
elem1 = document.forms[0];
elem2 = document.forms.item(0);
alert(elem1 === elem2); // 显示:"true"
elem1 = document.forms.myForm;
elem2 = document.forms.namedItem("myForm");
alert(elem1 === elem2); // 显示:"true"
elem1 = document.forms["named.item.with.periods"];
浏览器兼容性
当有多个元素匹配用作索引的字符串(或 namedItem
的参数)时,不同浏览器的行为会有所不同。 Firefox 8 的行为与 DOM 2 和 DOM 4 中指定的一样,返回第一个匹配元素。在这种情况下,WebKit 浏览器和 Internet Explorer 返回另一个 HTMLCollection
,Opera 返回所有匹配元素的 NodeList
。
规范
规范 | 状态 | 备注 |
---|---|---|
DOM HTMLCollection 的定义 |
现行的标准 | - |
Document Object Model (DOM) Level 2 HTML Specification HTMLCollection 的定义 |
已过时 | - |
Document Object Model (DOM) Level 1 Specification HTMLCollection 的定义 |
已过时 | 初始定义。 |