Javascript 单击以绑定控件 count=1; 对于(var i=0;ifor(var i=1;ifor(var i=1;i

Javascript 单击以绑定控件 count=1; 对于(var i=0;ifor(var i=1;ifor(var i=1;i,javascript,jquery,javascript-events,Javascript,Jquery,Javascript Events,您遇到此问题,因为您创建的每个事件处理程序中的i都指向内存中的同一位置。请尝试使用以下方法: for (var i = 1; i<6; i++) { $("#ImageProductLeft" + i.toString()).bind('click', function() { alert(i); }); } count=1; 对于(var i=0;i您遇到此问题,因为您创建的每个事件处理程序中的i都指向内存中的同一位置。请尝试使用以下方法: for (v

您遇到此问题,因为您创建的每个事件处理程序中的
i
都指向内存中的同一位置。请尝试使用以下方法:

for (var i = 1; i<6; i++)
{
    $("#ImageProductLeft" + i.toString()).bind('click', function() {
        alert(i);
    });
}
count=1;

对于(var i=0;i您遇到此问题,因为您创建的每个事件处理程序中的
i
都指向内存中的同一位置。请尝试使用以下方法:

for (var i = 1; i<6; i++)
{
    $("#ImageProductLeft" + i.toString()).bind('click', function() {
        alert(i);
    });
}
count=1;
对于(变量i=0;i
count=1;
对于(变量i=0;i
count=1;

对于(var i=0;i您正在a循环(闭包)中创建一个函数。所有变量都将在它们之间共享,并且
i

最终调用函数时,循环已经完成,
i
将具有值
5

JavaScript没有块作用域。要创建新作用域并捕获变量的值,请进行函数调用:

count=1;
for(var i=0;i<5;i++){
   count++;
   $("#ImageProductLeft"+count.toString()).bind('click', {i: i}, function(event){
         alert(event.data.i);
   });
}

for(var i=0;i您正在a循环(闭包)中创建一个函数。所有变量都将在它们之间共享,而且
i

最终调用函数时,循环已经完成,
i
将具有值
5

JavaScript没有块作用域。要创建新作用域并捕获变量的值,请进行函数调用:

count=1;
for(var i=0;i<5;i++){
   count++;
   $("#ImageProductLeft"+count.toString()).bind('click', {i: i}, function(event){
         alert(event.data.i);
   });
}

for(var i=0;i这更优雅、更灵活:

for(var i=0;i<5;i++){
   (function(x) {
       $("#ImageProductLeft"+count.toString()).bind('click', function(){
           alert(x);                                                                                                                                    
       });
   }(i));
}
您可以拥有以
ImageProductLeft
开头的任意多个元素,单击任何元素都会提醒它们各自的索引


.

这更优雅、更灵活:

for(var i=0;i<5;i++){
   (function(x) {
       $("#ImageProductLeft"+count.toString()).bind('click', function(){
           alert(x);                                                                                                                                    
       });
   }(i));
}
您可以拥有以
ImageProductLeft
开头的任意多个元素,单击任何元素都会提醒它们各自的索引


.

VERY VERY TANKS.gooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo。Gooooooooood当你绑定点击处理程序时,当前的i将作为数据存储到函数中。当函数被调用时,for循环已经完成,i的值为5。在你的版本中,他会提醒这个5,在我的版本中,他会提醒存储的值。感谢Felix,你已经得到了我的+1,因为我的答案很好,很完整,就像usua一样l、 :)看到这些循环让我感觉有点不舒服。很高兴有人给出了正确的答案。+1.谢谢菲利克斯,你已经得到了我的+1,因为答案很好,很完整,和往常一样。:)看到这些循环让我感觉有点不舒服。很高兴有人给出了正确的答案。+1。