在for循环迭代中创建延迟

时间:2012-02-06 17:06:28

标签: javascript css for-loop settimeout

我编写了以下函数,希望在顶部边距上添加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";
        }
    };

提前致谢!

3 个答案:

答案 0 :(得分:2)

建议检查jQuery .slideDown()函数 - http://api.jquery.com/slideDown/

答案 1 :(得分: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";
        }
    };

仍然需要调用函数但不能在循环体中调用。

答案 2 :(得分: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);
}