我有以下代码
var el = document.querySelectorAll('.block');
console.log(el);
el.addEventListener('click', function () {
alert('hello');
}, false);
但是,它会返回错误Uncaught TypeError: Object #<NodeList> has no method 'addEventListener'
为什么我会收到此错误,如何解决此问题?
答案 0 :(得分:7)
因为,正如错误消息告诉您NodeList
s没有an addEventListener
method.您应该遍历节点列表,并addEventListener
到每个元素 - 假设您要添加N个听众。
或者,select only a single element,代码的其余部分将按照书面形式运行。
答案 1 :(得分:6)
方法querySelectorAll()
返回NodeList,它是节点的集合。
因此,您需要迭代它以附加事件侦听器
var el = document.querySelectorAll('.block');
for(var i=0; i < el.length; i++){
el[i].addEventListener('click', function () {
alert('hello');
}, false);
}