2012-02-06 97 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); 
}