未捕获的TypeError:无法读取SVGPathElement上未定义的属性“ setAttribute”

时间:2019-09-24 13:09:54

标签: javascript jquery svg

我有一个svg地图图像,我想遍历它的path元素并添加添加一个类。我仍然收到上述错误。这是我的代码

document.addEventListener("DOMContentLoaded", function() {
svg = document.getElementsByTagName('path');        

for(i=0; i<svg.length;i++)
  {
    svg[i].addEventListener('mouseover', function(){
        svg[i].setAttribute('class','svgclass');
    });
  }

});

我做错了什么?谢谢

1 个答案:

答案 0 :(得分:2)

在出现svg[i]时未定义

mouseover。可能是因为i等于每个事件处理程序中循环的最大值,并且至少一个元素已从集合中移除。

一个更好的选择是使用this来引用引发事件的元素。注意也使用classList.add();这会将一个类添加到任何现有的类中,而不是删除所有现有的类。

for (i = 0; i < svg.length; i++) {
  svg[i].addEventListener('mouseover', function() {
    this.classList.add('svgclass');
  });
}