1. 2.5 常用 DOM 接口
      1. 2.5.1 在 IDL 属性中反映内容属性
      2. 2.5.2 集合
        1. 2.5.2.1 HTMLAllCollection 接口
        2. 2.5.2.2 HTMLFormControlsCollection 接口
        3. 2.5.2.3 HTMLOptionsCollection 接口
      3. 2.5.3 DOMStringList 接口

2.5 常用 DOM 接口

2.5.1 在 IDL 属性中反映内容属性

反映的构建块如下

一个反射 IDL 属性可以被定义为反射一个反射内容属性名称,该名称属于一个反射目标。一般来说,这意味着 IDL 属性 getter 返回内容属性的当前值,而 setter 将内容属性的值更改为给定值。

如果反射目标是一个元素,那么反射 IDL 属性还可以声明支持 ElementInternals。这意味着 ElementInternals 接口也具有一个反射 IDL 属性,它具有相同的标识符,并且该反射 IDL 属性反射相同的反射内容属性名称

fooBar IDL 属性必须反射foobar 内容属性并支持 ElementInternals

2.5.2 集合

HTMLFormControlsCollectionHTMLOptionsCollection 接口是从HTMLCollection 接口派生的集合HTMLAllCollection 接口是一个集合,但不是这样派生的。

2.5.2.1 HTMLAllCollection 接口

HTMLAllCollection 接口用于旧版 document.all 属性。它的操作方式类似于HTMLCollection;主要区别在于它允许各种不同的(滥用)方法最终返回某些内容,并且可以将其作为函数调用作为属性访问的替代方案。

所有 HTMLAllCollection 对象都根植于一个 Document 并且具有一个匹配所有元素的过滤器,因此 HTMLAllCollection 对象的集合所表示的元素由根 Document 的所有后代元素组成。

实现 HTMLAllCollection 接口的对象具有几种异常行为,因为它们具有一个[[IsHTMLDDA]] 内部槽

这些特殊行为的动机是希望与两类旧版内容兼容:一类是使用 document.all 的存在来检测旧版用户代理,另一类只支持这些旧版用户代理并在不首先测试其存在的情况下使用 document.all 对象。[JAVASCRIPT]

2.5.2.2 HTMLFormControlsCollection 接口

HTMLFormControlsCollection 接口用于表单元素中列出元素的集合的集合

collection.length

返回 collection 中的元素数量。

element = collection.item(index)
element = collection[index]

返回 collection 中索引 index 处的项目。这些项目按树状顺序排序。

element = collection.namedItem(name)
radioNodeList = collection.namedItem(name)
element = collection[name]
radioNodeList = collection[name]

collection 中返回具有IDname name 的项目。

如果有多个匹配项,则返回包含所有这些元素的 RadioNodeList 对象。

radioNodeList.value

RadioNodeList/value

所有当前引擎都支持。

Firefox33+Safari7+Chrome21+
Opera?Edge79+
Edge (旧版)12+Internet Explorer9+
Firefox Android?Safari iOS?Chrome Android?WebView Android?Samsung Internet?Opera Android?

返回 radioNodeList 表示的第一个选中的单选按钮的值。

radioNodeList.value = value

选中 radioNodeList 表示的第一个具有值 value 的单选按钮。

2.5.2.3 HTMLOptionsCollection 接口

HTMLOptionsCollection

所有当前引擎都支持。

Firefox1+Safari3+Chrome1+
Opera12.1+Edge79+
Edge (旧版)12+Internet Explorer6+
Firefox Android?Safari iOS1+Chrome Android?WebView Android37+Samsung Internet?Opera Android12.1+

HTMLOptionsCollection 接口用于option 元素的集合。它始终根植于select 元素,并具有操作该元素的后代的属性和方法。

collection.length

返回 collection 中的元素数量。

collection.length = value

当设置为小于现有长度的数字时,会截断与 collection 对应的容器中的option 元素数量。

当设置为大于现有长度的数字时,如果该数字小于或等于 100000,则会向与 collection 对应的容器中添加新的空白option 元素。

element = collection.item(index)
element = collection[index]

返回 collection 中索引 index 处的项目。这些项目按树状顺序排序。

collection[index] = element

index 大于 collection 中的项目数量时,会在相应的容器中添加新的空白option 元素。

当设置为 null 时,会从 collection 中删除索引 index 处的项目。

当设置为option 元素时,会在 collection 中的索引 index 处添加或替换它。

element = collection.namedItem(name)
element = collection[name]

collection中返回具有IDname属性值为name的项目。

如果有多个匹配的项目,则返回第一个。

collection.add(element[, before])

在由before指定的节点之前插入element

before参数可以是一个数字,在这种情况下,element将在具有该数字的项目之前插入;也可以是collection中的一个元素,在这种情况下,element将在该元素之前插入。

如果before被省略、为null或超出范围的数字,则element将添加到列表的末尾。

如果element是将其插入到的元素的祖先,则抛出一个"HierarchyRequestError" DOMException

collection.remove(index)

collection中删除索引为index的项目。

collection.selectedIndex

返回第一个选中项目的索引(如果有),如果没有选中项目则返回−1。

collection.selectedIndex = index

将选择更改为collection中索引为indexoption元素。

2.5.3 DOMStringList 接口

DOMStringList

所有当前引擎都支持。

Firefox1+Safari5.1+Chrome1+
Opera12.1+Edge79+
Edge (旧版)12+Internet Explorer10+
Firefox Android?Safari iOS?Chrome Android?WebView Android3+Samsung Internet?Opera Android12.1+

DOMStringList 接口是一种过时的、不流行的表示字符串列表的方式。

strings.length

DOMStringList/length

所有当前引擎都支持。

Firefox1+Safari5.1+Chrome1+
Opera12.1+Edge79+
Edge (旧版)12+Internet Explorer10+
Firefox Android?Safari iOS?Chrome Android?WebView Android37+Samsung Internet?Opera Android12.1+

返回strings中字符串的数量。

strings[index]
strings.item(index)

DOMStringList/item

所有当前引擎都支持。

Firefox1+Safari5.1+Chrome1+
Opera12.1+Edge79+
Edge (旧版)12+Internet Explorer10+
Firefox Android?Safari iOS?Chrome Android?WebView Android3+Samsung Internet?Opera Android12.1+

返回strings中索引为index的字符串。

strings.contains(string)

DOMStringList/contains

所有当前引擎都支持。

Firefox1.5+Safari5.1+Chrome1+
Opera12.1+Edge79+
Edge (旧版)12+Internet Explorer10+
Firefox Android?Safari iOS?Chrome Android?WebView Android3+Samsung Internet?Opera Android12.1+

如果strings包含string,则返回true,否则返回false。