保存回调中变量的值

Save value of variable within callback

本文关键字:变量 回调 保存      更新时间:2023-09-26

我有以下代码:

<div id="0">click here</div>
<div id="1">click here</div>
<div id="2">click here</div>
for(var i=0;i<3;i++){
   document.getElementById(i).addEventListener("click",function(){
      alert(i);
   });
}

我如何让我的回调函数警报1,然后2,然后3?它总是提醒3,我需要一种方法让它在每次迭代时保存' I '的值。

for(var i=0;i<3;i++) {
    document.getElementById(i).addEventListener("click", (function() {
            var j = i;
            return function() {
                alert(j);
            }
        })();
    );
}

这个也可以:

for(var i=0;i<3;i++) {
    document.getElementById(i).addEventListener("click", (function(j) { alert(j); }).bind(undefined,i));
}

可以使用全局计数器变量来计算点击次数。

var counter = 1;
for(var i=0;i<3;i++){
   document.getElementById(i).addEventListener("click",function(){
      alert(counter++);
   });
}