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 的定义 |
已过时 | 初始定义。 |