我需要构建一个在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);
}
答案 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);
免责声明:我还没有测试过。 (尚)击>
答案 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);