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

时间:2014-02-28 14:48:10

标签: javascript function

<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 个答案:

答案 0 :(得分:5)

elHTMLCollection,您忘记使用索引:

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

答案 1 :(得分: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);
    }
}