Javascript 从for-in循环调用递增器
在这个循环中,为了识别当前元素,调用递增器I有点困难。Firebug向我提供了错误Javascript 从for-in循环调用递增器,javascript,loops,increment,getelementsbytagname,Javascript,Loops,Increment,Getelementsbytagname,在这个循环中,为了识别当前元素,调用递增器I有点困难。Firebug向我提供了错误“li[i]。addEventListener不是函数” 奇怪的是如果我打电话 alert(li[i].getAttribute('id') 我得到了提醒我的id,但是如果我使用 var id=li[i].getAttribute('id'); document.getElementById(id).addEventListener(blah); 我得到同样的“不是函数”错误。这是一个for-in-loop的东
“li[i]。addEventListener不是函数”
奇怪的是如果我打电话
alert(li[i].getAttribute('id')
我得到了提醒我的id,但是如果我使用
var id=li[i].getAttribute('id');
document.getElementById(id).addEventListener(blah);
我得到同样的“不是函数”错误。这是一个for-in-loop的东西吗?我注意到,alert(I)
在循环结束时调用了一些额外的东西,那么在for-in循环中使用递增器有不同的方法吗?顺便说一下,我使用的列表如下:
<ul>
<li id=pomp>
stuff
</li>
<li id=and>
and
</li>
<li id=circumstance>
things
</li>
</ul>
-
东西
-
和
-
东西
这就是为什么您必须避免使用for in
循环
for(var i=0;i<li.length;i++){
li[i].addEventListener('click', function(){
alert('yey');
});
}
for(var i=0;i这样试试
for(var i in li){
i.addEventListener('click', function(){
alert('yey');
});
}
});
正如@lbu所指出的,您应该使用for(decl;test;inc)
遍历数组
不过,这也是使用委派的好地方,因为每个
都必须是
的直接后代,因此您可以将事件处理程序放在那里,并减少浏览器的工作量:
var ul = document.getElementsByTagName('ul');
for (var i = 0, n = ul.length; i < n; ++i) {
ul[i].addEventListener('click', function(ev) {
alert(ev.target.id);
});
}
var ul=document.getElementsByTagName('ul');
对于(变量i=0,n=ul.length;i
看如果它像那样工作,那将非常酷,但不幸的是,这不起作用。
var ul = document.getElementsByTagName('ul');
for (var i = 0, n = ul.length; i < n; ++i) {
ul[i].addEventListener('click', function(ev) {
alert(ev.target.id);
});
}