HTMLAllCollection

已弃用: 不再推荐使用该特性。虽然一些浏览器仍然支持它,但也许已从相关的 web 标准中移除,也许正准备移除或出于兼容性而保留。请尽量不要使用该特性,并更新现有的代码;参见本页面底部的兼容性表格以指导你作出决定。请注意,该特性随时可能无法正常工作。

HTMLAllCollection 接口表示所有文档元素(通过索引(类似于数组)和元素的 id 访问)的集合。它由 document.all 属性返回。

HTMLAllCollection 的形态与 HTMLCollection 非常相似,但两者在行为上存在许多细微差异,例如,HTMLAllCollection 可以作为函数调用,并且其 item() 方法可以使用表示元素 idname 属性的字符串调用。

实例属性

HTMLAllCollection.length 只读

返回集合中项目的数量。

实例方法

HTMLAllCollection.item()

返回位于集合中指定偏移位置的元素,或者返回其 idname 属性具有指定值的元素。如果未找到任何元素,则返回 null

HTMLAllCollection.namedItem()

返回集合中第一个其 idname 属性与给定的字符串名称匹配的元素,如果没有匹配的元素,则返回 null

JavaScript 中的用法

索引访问

除了上述方法外,可以通过整数索引和字符串属性名称来访问 HTMLAllCollection 中的元素。HTML id 属性可能包含 :. 作为有效字符,这需要使用方括号属性访问。collection[i] 等同于 collection.item(i),其中 i 可以是整数、包含整数的字符串或表示 id 的字符串。

作为函数调用

HTMLAllCollection 对象是可调用的。当无参数调用或传入 undefined 时,它返回 null。否则,当传入相同参数时,它返回与 item() 方法相同的值。

特殊类型转换行为

由于历史原因,document.all 是一个在以下方面表现得像 undefined 的对象:

  • 它与 undefinednull宽松相等的。
  • 在布尔上下文中,它是假值
  • 它的 typeof 结果是 "undefined"

这些特殊行为确保了如下代码能够正常工作:

js
if (document.all) {
  // 假设我们是在 IE 浏览器中;提供特殊逻辑
}
// 假设我们是在一个现代浏览器中

即使代码在出于兼容性原因实现了 document.all 的浏览器中运行,它也将继续提供现代浏览器的行为。

然而,在所有其他上下文中,document.all 仍然是一个对象。例如:

规范

Specification
HTML Standard
# the-htmlallcollection-interface

浏览器兼容性

BCD tables only load in the browser

参见