classList在MS-Edge中不起作用

时间:2017-09-27 22:47:41

标签: javascript svg microsoft-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/

我在互联网上找到了这张票,其中微软声明它已被修复; https://developer.microsoft.com/en-us/microsoft-edge/platform/issues/1173756/。对我来说,情况似乎并非如此。

首选添加一个类,但是替换为svg元素更改元素属性(如填充本例)与javascript 的解决方法也可以作为答案。

最后注意事项:在实际情况下,我试图触发css动画,而不是背景颜色。

1 个答案:

答案 0 :(得分:3)

可以使用至少两种常用方法访问Elements类属性

element.className // a string

element.classList // a "DOMTokenList"

在其他浏览器中(至少目前除了Edge),element.classList += "red"实际上与element.className += "red"相同如果元素还没有类,那么这很好

但是,如果你有

<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,这使得使用类很容易