我遇到的问题是我无法在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动画,而不是背景颜色。
答案 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,这使得使用类很容易