简体   繁体   English

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

[英]JavaScript closure el.addEventListener is not a 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);

Gives me error "el.addEventListener is not a function", what is the problem? 给我错误“el.addEventListener不是函数”,有什么问题?

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

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

You're missing [i] (index) in your code (it must be el[i] ), thought addEventListener doesn't work in IE versions. 您在代码中缺少[i] (索引)(它必须是el[i] ),认为addEventListener在IE版本中不起作用。 To fix this problem you can do something like this: 要解决此问题,您可以执行以下操作:

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

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM