0

重複の可能性:
JavaScript コールバック関数の変数は常にループの最後の値を取得しますか?

fadeOut 関数のコールバック関数に k の値を渡すことができません。私のループは以下のとおりです。

 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 に答える