JavaScript闭包el.addEventListener不是一个函数

3
<div id="a">ONE</div>
<div id="b">TWO</div>
<div id="c">THREE</div>
var el = document.getElementsByTagName("div");

for ( var i = 0; i < el.length; i++ ) (function(){
 el.addEventListener("click",function(){
  console.log(this.id + " " + this.innerHTML);
 },false);
})(i);

出现错误信息“el.addEventListener 不是一个函数”,这是什么问题?
2个回答

5

el是一个HTMLCollection,你忘记使用索引了:

el[i].addEventListener("click",function(){...};

0

你的代码中缺少了 [i](索引)(应该是 el[i]),尽管 addEventListener 在 IE 版本中不起作用。要解决这个问题,你可以像这样做:

function evt(elem,type,fn) { // element, event type, function
    if ( elem.addEventListener ) {
        elem.addEventListener(type,fn,false);
    } else {
        elem.attachEvent("on" + fn);
    }
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接