2012-04-24 11 views
0

これは、1秒後に7回「7」を記録します。

for (var i = 0; i < 7; i++) { 
    $.doTimeout(1000, function() { 
     console.log(i); 
    }); 
} 

しかし、どのように私はそれが '0' を記録したい場合は行うには、 '1'、 '2'、 '3'、 '4'、 '5'、 '6'?

($ .doTimeoutがBen Alman's plug-inですが、私はそれがのsetTimeoutと同じ問題だと思う。)

ありがとう!

答えて

1
for (var i = 0; i < 7; i++) { 
    (function(i) { 
     $.doTimeout(1000, function() { 
      console.log(i); 
     }); 
    }(i)); 
} 

あなたはクロージャがそれを見上げたとき、それはその範囲から値を取得するように可変iにスコープを関連付ける必要があります。

+0

YEAH!スコープを関連づけようとしましたが、$ .doTimeout関数自体には入れないようにしました。ありがとうございました! – Joan

関連する問題