javascript中计数器变量的奇怪值

时间:2012-04-25 14:11:27

标签: javascript

  

可能重复:
  Javascript infamous Loop problem?

由于某种原因,我得到" 6"在我的函数里面为每个div元素:

for(var i = 1; i <= 5; i++){
  $('<div class="e-' + i + '"></div>').appendTo(something).click(function(){
    alert(i);  // <-- it's 6. wtf??
  });
}

而不是1,2,3等

另一方面,该课程似乎正确设置..

我做错了什么?

2 个答案:

答案 0 :(得分:11)

您的for循环正在页面加载时执行。仅当for循环结束后发生单击事件时,警报才会触发。因此i的值现在为6。

1)页面加载,for循环做它的东西......

2)稍后会触发点击事件。此时i的值为6,因为for循环已经完成。

答案 1 :(得分:5)

问题是你需要创建一个闭包来捕获绑定点击功能时i

试试这个:

for(var i = 1; i <= 5; i++)
{
  $('<div class="e-' + i + '"></div>')
    .appendTo(something)
    .click(function(value)
    { 
      return function() { alert(value) };
    }(i));
}