classList 在 MS-Edge 中不起作用

classList not working in MS-Edge

我遇到了无法在 svg 元素上使用 javascript 的 classList 的问题。

我通过这段简单的代码复制了这个问题:

html

<svg viewBox="0 0 100 100">
<circle id="circle" r="40" cx="50" cy="50"></circle>
</svg>

css

.red{
  fill: red;
}

javascript

document.getElementById("circle").classList += "red";

JS-fiddle: https://jsfiddle.net/gqckv029/

我在 Internet 上找到了这张票据,Microsoft 说它已修复; https://developer.microsoft.com/en-us/microsoft-edge/platform/issues/1173756/。对我来说似乎并非如此。

添加 class 是首选,但也可以使用一种变通方法来更改元素属性(例如在这种情况下填充)with javascript svg元素也足以作为答案。

最后说明:在真实情况下,我试图触发 css 动画,而不是背景颜色。

元素 class 属性可以使用至少两种常用方法访问

element.className // a string

element.classList // a "DOMTokenList"

在其他浏览器中(至少目前除了 Edge),element.classList += "red" 实际上与 element.className += "red" 相同,如果元素还没有 class [=20] =]

但是,如果你有

<element class="blue">

那么 classList += "red"className += "red" 都会导致

<element class="bluered">

使用classList.add 方法可能就是您想要的

<element class="blue">
element.classList.add('red')
<element class="blue red">

还有 classList.remove 和 classList.toggle,这使得使用 classes 变得容易