javascript - 未捕获的类型错误:无法读取 SVGPathElement 处未定义的属性“setAttribute”
问题描述
我有一个 svg 地图图像,我想循环它的路径元素并添加一个类。我仍然收到上述错误。这是我的代码
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');
});
}
});
我究竟做错了什么?谢谢
解决方案
svg[i]
在这一点上是未定义的mouseover
。可能是因为i
等于每个事件处理程序中循环的最高值,并且至少有一个元素已从集合中删除。
一个更好的选择是使用this
来引用引发事件的元素。注意使用classList.add()
as well; 这会将一个类附加到任何现有的类,而不是删除所有现有的类。
for (i = 0; i < svg.length; i++) {
svg[i].addEventListener('mouseover', function() {
this.classList.add('svgclass');
});
}
推荐阅读
- java - 如何跟踪三列Java中每一列的总和
- python-3.x - Heroku 应用部署失败,原因不明
- c++ - 使用放置 new 在另一个函数中使用 args 调用构造函数
- java - Java和NodeJS中的变量“long”类型
- python - 当我尝试将图像上传到 /media/ 目录时出现“权限被拒绝”,DJANGO
- android - SQLite GROUP BY 偏好某个值
- google-docs-api - 如何使用 APIv1 将一个 Google Doc 附加到另一个
- java - 字符串池是否存储文字或对象?
- javascript - 无法从浏览器存储加载布局内容
- visual-studio-2019 - 无法加载 Visual Studio 调试器组件(VS 2019)