0

可能重复:
JavaScript 回调函数中的变量总是在循环中获取最后一个值?

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

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

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

2 回答 2

4

jQueryfadeOut函数采用不带参数的回调函数。从jQuery 文档中,“回调未发送任何参数”。如果要捕获 的值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);
}
于 2012-10-26T05:01:15.503 回答
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);
}
于 2012-10-26T05:03:10.750 回答