2012-02-06 94 views
0

我已經編寫了以下函數,希望在頂部邊距上添加1px,以便爲從頁面滑出的窗口設置動畫效果。在循環迭代中創建延遲

目前它工作正常,並從頁面中刪除窗口,但我有問題在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() – 2012-02-06 17:09:07

+1

jQuery和其他框架在內部處理動畫,所以你不必擔心它。值得考慮。 – 2012-02-06 17:10:48

回答

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"; 
     } 
    }; 

仍需要調用的循環體的功能,但沒有。

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); 
}