在x秒后启动第二个setInterval

时间:2012-08-03 10:26:26

标签: javascript jquery setinterval

我需要构建一个在x秒后上下滚动的页面。我只需要知道如何在延迟后启动第二个setInterval。或者,如果人们得到其他解决方案,我可以做任何事情!

这是代码:

setInterval(function() {
    scrollDown();
},8000);

setInterval(function() {
    scrollUp();
},8000);

function scrollDown() {

    $('html, body').animate({
        scrollTop: $("#page2").offset().top
    }, 2000);
}

function scrollUp() {

    $('html, body').animate({
    scrollTop: $("#page1").offset().top
    }, 2000);
}

5 个答案:

答案 0 :(得分:2)

更清洁,更精确地只用一个计时器就可以做到这一点:

setInterval(scrollDown, 8000);

function scrollDown() {
    $('html, body').animate({
        scrollTop: $("#page2").offset().top
    }, 2000);

    setTimeout(scrollUp, 4000);
}

function scrollUp() {
    $('html, body').animate({
        scrollTop: $("#page1").offset().top
    }, 2000);
}

答案 1 :(得分:1)

您可以使用设置自己的setTimeout吗?

function setNext(up){
  setTimeout(function(){
     if(up) scrollUp(); 
     else scrollDown();
     setNext(!up);
  }, 8000);
}

scrollDown() //first time
setNext(true);

免责声明:我还没有测试过。 (尚)

这是working demo.

答案 2 :(得分:0)

最简单的解决方案,试试这个:

setInterval(function() {
    scrollDown();
},8000);

setTimeOut(function(){
    setInterval(function() {
        scrollUp();
    },8000);
},1000);

因为setTimeOut函数只调用一次

答案 3 :(得分:0)

其他人已经回答了,所以我只会补充一点:

setInterval(function() {
    scrollDown();
}, 8000);

setInterval(function() {
    scrollUp();
}, 8000);

与此相同:

setInterval(scrollDown, 8000);

setInterval(scrollUp, 8000);

如果您在该匿名函数中所做的只是调用另一个命名函数,则不需要匿名函数进行回调 - 您只需传递指定函数。

答案 4 :(得分:-1)

setInterval(function() {
    scrollDown();
},8000);

setInterval(function() {
    scrollUp();
},8000 + 2000);

对于它的价值,以上将具有完全相同的效果。但对于符合您要求的代码,您可以:

setInterval(function() {
    scrollDown();
},8000);

setInterval(function() {
    setInterval(function() {
        scrollUp();
    },8000);
2000);