2012-02-06 27 views
0

私は、ページ外にスライドするウィンドウをアニメーション化するために、1pxを上の余白に追加することを望んで、次の関数を書いています。forループの繰り返しで遅延を作成する

現在、それはうまく動作し、ページからウィンドウを削除しますが、forループの各繰り返しで遅延間隔を作成する際に問題があります。私はsetTimeout()を使用することを考えましたが、これではちょうど壊れません。 forループ私は関数を呼び出す必要があります

アイデア?

function slideOut() { 
    var obj = document.getElementById("cInstructs"); 
    var orig = 66; 
    for(i=0; i<2000; i++) { 
     orig++; 
     obj.style.marginTop = orig+"px"; 
     } 
    }; 

ありがとうございます!

+2

タイマループは、さまざまなマシンとブラウザで大きく異なります。あなたはsetTimeout()を使う必要があります –

+1

jQueryと他のフレームワークは内部的にアニメーションを扱うので、心配する必要はありません。検討する価値がある。 –

答えて

0
var i; 

function incrAndDelay(i) { 
setTimeout(...); 
i+=1; 
return i; 
} 


function slideOut() { 
    var obj = document.getElementById("cInstructs"); 
    var orig = 66; 
    for(i=0; i<2000; incrAndDelay(i)) { 
     orig++; 
     obj.style.marginTop = orig+"px"; 
     } 
    }; 

機能 - )(jQueryの.slideDownをチェックすることであろうまだループ本体に関数を呼び出すなくしなければなりません。

0
var intId; 
function slideOut() { 
    clearInterval(intId); 
    var count = 0; 
    var obj = document.getElementById("cInstructs"); 
    var orig = 66; 
    intId = setInterval(function(){ 
     orig++; 
     obj.style.marginTop = orig+"px"; 
     if((++count == 2000)){ 
      clearInterval(intId); 
     } 
    }, 100); 
}