これが私が
http://www.schillmania.com/content/projects/javascript-animation-1/demo/
からコピーしたコードの一部です。
非常に単純なJSアニメーション:
function doMove() {
foo.style.left = parseInt(foo.style.left)+1+'px';
setTimeout(doMove,20);
}
これは正常に機能します。ただし、次のように変更すると、次のようになります。
function doMove() {
for (var i=0; i<1000; i++) {
setTimeout(function(){foo.style.left = parseInt(foo.style.left)+1+'px';},20*i);
}
}
したがって、アニメーションはまったくありません。私の知る限り、setTimeoutが呼び出されるたびに、JSエンジンはこれらのイベントをキューにプッシュします。だから私はこれがうまくいかない理由を理解していません。