0

重複の可能性:
Javascript の悪名高いループの問題?

関数内の変数にアクセスしようとすると問題が発生します$.post

関数内の変数の値aは常に同じ7です。しかし、その外側では、私が望むように増加します。

なぜこうなった?$.post関数のループを実行するにはどうすればよいですか?

for(var a=0; a<7; a++){
    console.log(a); /* increasing value */

    $.post("http://"+ document.domain + "/posts/user/xxxxx",
        function(departments){
        console.log(a);  /*value of 7*/

    });
}

ありがとう。

4

1 に答える 1

3

反復ごとに独自のスコープを指定するか、$.ajaxおよびcontextオプションを使用します。

for(var a=0; a<7; a++){
    (function(a){
        console.log(a); /* increasing value */

        $.post("http://"+ document.domain + "/posts/user/xxxxx",
            function(departments){
            console.log(a);  /*value of 7*/

        });
    })(a);
}

$.ajax...

for(var a=0; a<7; a++){
    console.log(a); /* increasing value */

    $.ajax({
        url: "http://"+ document.domain + "/posts/user/xxxxx",
        type: "POST",
        context: a,
        success: function(departments){
            console.log(this);  /*value of 7*/    
        }
    });
}
于 2012-12-04T15:09:58.897 に答える