DOMTokenList: toggle() 方法

Baseline 已广泛支持

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

DOMTokenList 接口的 toggle() 方法会移除列表中的一个现有 token 并返回 false。如果 token 不存在,则会添加该 token 并返回 true

语法

js
toggle(token)
toggle(token, force)

参数

token

你想要切换的 token 的字符串表示。

force 可选

如果包含此参数,则会将切换操作限制为单向。如果设置为 false,则 token被移除,而不会被添加。如果设置为 true,则 token被添加,而不会被移除。

返回值

一个布尔值,truefalse,指示调用后 token 是否在列表中。

示例

点击时切换 class

在以下示例中,我们使用 Element.classList 获取一个 <span> 元素的 class 列表,并将其作为 DOMTokenList 进行处理。然后,我们替换列表中的一个 token,并将更新后的列表写入 <span>Node.textContent

首先,HTML 代码

html
<span class="a b">classList is 'a b'</span>

现在是 JavaScript 代码

js
const span = document.querySelector("span");
const classes = span.classList;

span.addEventListener("click", () => {
  const result = classes.toggle("c");
  span.textContent = `'c' ${
    result ? "added" : "removed"
  }; classList is now "${classes}".`;
});

输出如下所示,并且每次点击文本时都会发生变化

设置 force 参数

第二个参数可用于确定是否包含 class。此示例仅当浏览器窗口宽度大于 1000 像素时才包含 'c' class。

js
span.classList.toggle("c", window.innerWidth > 1000);

规范

规范
DOM
# ref-for-dom-domtokenlist-toggle①

浏览器兼容性