循环变量传递给回调函数时的undefined变量

时间:2012-10-26 04:57:54

标签: javascript

  

可能重复:
  Variable in JavaScript callback functions always gets last value in loop?

我无法将k的值传递给fadeOut函数的回调函数。 我的循环如下所示。

 for(var k=0;k<image1.length;k++)
 {

    $(img[k]).fadeOut(200,function(k) {
        alert(k);
        $(this).attr('src', image2[k]);
        $(this).fadeIn(200);
    });
  }

2 个答案:

答案 0 :(得分:4)

jQuery fadeOut函数采用不带参数的回调函数。从jQuery documentation开始,“回调不会发送任何参数”。如果要捕获k的值,请执行以下操作:

for(var k=0;k<image1.length;k++) {
    (function(k) {
        $(img[k]).fadeOut(200,function() {
            alert(k);
            $(this).attr('src', image2[k]);
            $(this).fadeIn(200);
        });
    })(k);
}

答案 1 :(得分:3)

您必须执行以下操作才能为您的变量提供回调权限:

for (var k = 0; k < image1.length; k++) {
    (function(k) {
        $(img[k]).fadeOut(200, function() {
            alert(k);
            this.src = image2[k];
            $(this).fadeIn(200);
        });
    })(k);
}