给NodeList的li元素添加eventListener时出现TypeError错误求助
解决NodeList元素添加事件监听器报错的问题
嘿,咱们直接说重点——你遇到的这个报错,核心原因是方法名拼写错误!你写的addEventLister少了一个字母n,正确的DOM事件绑定方法名应该是addEventListener。
先看你出错的代码:
for (var x=0; x < dataList.length; x++) { dataList[x].addEventLister("mouseover", function() { console.log("test"); }); }
只需要把addEventLister改成addEventListener,这个基础问题就解决了:
for (var x=0; x < dataList.length; x++) { dataList[x].addEventListener("mouseover", function() { console.log("test"); }); }
另外,给你两个优化建议:
- 用
let代替var声明循环变量x,避免变量提升带来的闭包陷阱(虽然你这个场景里打印固定字符串不会有问题,但养成好习惯没坏处):for (let x=0; x < dataList.length; x++) { dataList[x].addEventListener("mouseover", function() { console.log("test"); }); } - 现代浏览器中NodeList原生支持
forEach遍历,写法更简洁直观:dataList.forEach(item => { item.addEventListener("mouseover", () => { console.log("test"); }); });
补充一句:你能成功打印dataList[x],说明这些元素都是有效的DOM节点,所以排除了“操作非DOM元素”的可能性,这次的问题完全是拼写失误导致的~
内容的提问来源于stack exchange,提问作者swirdlerr
相关产品推荐
相关产品推荐

