DOMTokenList

Baseline 已广泛支持

此特性已相当成熟,可在许多设备和浏览器版本上使用。自 ⁨2015 年 7 月⁩以来,各浏览器均已提供此特性。

DOMTokenList 接口表示一组由空格分隔的标记(token)。例如,Element.classListHTMLLinkElement.relList 以及许多其他属性会返回这样的集合。

DOMTokenList 与 JavaScript 的 Array 对象一样,从 0 开始索引。DOMTokenList 始终区分大小写。

实例属性

DOMTokenList.length 只读

一个 integer,表示对象中存储的对象数量。

DOMTokenList.value

一个 字符串转换器(stringifier) 属性,以字符串形式返回列表的值。

实例方法

DOMTokenList.item()

根据索引返回列表中的项,如果索引大于或等于列表的 length,则返回 null

DOMTokenList.contains()

如果列表包含给定标记,则返回 true,否则返回 false

DOMTokenList.add()

将指定的标记添加到列表中。

DOMTokenList.remove()

从列表中移除指定的标记。

DOMTokenList.replace()

用另一个标记替换现有标记。

DOMTokenList.supports()

如果给定标记存在于关联属性支持的标记列表中,则返回 true

DOMTokenList.toggle()

如果令牌存在于列表中,则将其移除;如果不存在,则将其添加到列表中。返回一个布尔值,指示操作后令牌是否在列表中。

DOMTokenList.entries()

返回一个 迭代器(iterator),允许您遍历对象中包含的所有键/值对。

DOMTokenList.forEach()

DOMTokenList 中的每个元素执行一次提供的回调函数。

DOMTokenList.keys()

返回一个 迭代器(iterator),允许您遍历对象中包含的所有键/值对的键。

DOMTokenList.toString()

返回 DOMTokenList.value,即列表中由空格分隔的值组成的字符串。

DOMTokenList.values()

返回一个 迭代器(iterator),允许您遍历对象中包含的所有键/值对的值。

示例

在下面的简单示例中,我们使用 Element.classList 获取 <p> 元素上设置的类列表(作为 DOMTokenList),然后使用 DOMTokenList.add() 添加一个类,最后将 <p>Node.textContent 更新为等于 DOMTokenList 的值。

首先,HTML 代码

html
<p class="a b c"></p>

现在是 JavaScript 代码

js
let para = document.querySelector("p");
let classes = para.classList;
para.classList.add("d");
para.textContent = `paragraph classList is "${classes}"`;

输出如下所示

修剪空格并移除重复项

修改 DOMTokenList 的方法(例如 DOMTokenList.add())会自动修剪任何多余的 空格 并从列表中移除重复的值。例如:

html
<span class="    d   d e f"></span>
js
let span = document.querySelector("span");
let classes = span.classList;
span.classList.add("x");
span.textContent = `span classList is "${classes}"`;

输出如下所示

规范

规范
DOM
# interface-domtokenlist

浏览器兼容性