清除element.classList

war*_*iuc 38 javascript dom

element.classListDOMTokenList类型的.

有没有办法清除这个清单?

nnn*_*nnn 69

我不知道与"相关的"功能意义上的"方法" classList.它具有.add().remove()方法来添加或删除单个的类,但你可以从这样的元素删除所有类别的感觉清除列表:

element.className = "";
Run Code Online (Sandbox Code Playgroud)

  • `element.classList =""`也有效 (7认同)
  • 当我在Safari(版本9.1.1)中尝试`element.classList =""`时,我收到一个错误:`TypeError:尝试分配给readonly属性. (4认同)
  • 除非我犯了一个错误,否则这不能在 SVG 节点上使用,至少在 Firefox 中是这样。`className` 是只读的。这有效:`node.setAttributeNS(null, 'class', '')` (3认同)

Fre*_*ond 8

var classList = element.classList;
while (classList.length > 0) {
   classList.remove(classList.item(0));
}
Run Code Online (Sandbox Code Playgroud)

  • @Shayan `.item(0)` 为您提供第一个类名,您将在字符串上调用 `.remove()` (2认同)

jun*_*var 7

如今,classList优先于(remove|set)AttributeclassName。Pekaaw 上面的答案很好,1 个类似的替代方案是设置DomTokenList.value

elem.classList.value = ''
Run Code Online (Sandbox Code Playgroud)


pek*_*aaw 5

使用ES6和散布运算符,这很容易。

element.classList.remove(...element.classList);
Run Code Online (Sandbox Code Playgroud)

这会将列表项作为remove方法的参数传播。
由于classList.remove方法可以接受许多参数,因此将它们全部删除并清除classList。

即使可读性也不高。@Fredrik Macrobond的答案更快。
jsperf上查看不同的解决方案及其测试结果。


Luc*_*iva 5

这是另一种方法:

element.setAttribute("class", "")
Run Code Online (Sandbox Code Playgroud)

  • IMO 这是执行此操作的正确方法,因为其他方法不会在浏览器的开发人员工具的“元素”选项卡中显示更改,但此方法会显示。 (2认同)