在两个循环之间切换

Jos*_*son 3 javascript jquery loops

作为了解更多关于jQuery的一种方法,我正在尝试创建一个能够滚动到页面底部的函数,返回到顶部,然后在无限循环中重新开始.

到目前为止,我有这个

var scroll = $(document).scrollTop();

setInterval(function(){
        scroll += 5;
        $(document).scrollTop(scroll);
}, 10);
Run Code Online (Sandbox Code Playgroud)

这将滚动到页面底部.

当它到达底部时,它需要设置一个标志,可能var direction = 1 是1下降,0上升.
现在我需要添加类似的东西

if(direction){
    // scroll down
} else {
    // scroll up
}
Run Code Online (Sandbox Code Playgroud)

所以我IF会不断地检查值direction并将scrollvar 增加+ = 5或 - = 5

这听起来合乎逻辑还是有更简单的方法来实现这一点?

编辑

这里是一个工作版本somethinghere的建议

https://jsfiddle.net/Panomosh/evkxou3e/

som*_*ere 8

您应该使用jQuerys回调来创建无限递归函数.只需在animate函数中声明后添加一个函数,然后调用相同的函数,但反转传递的boolean.

此外,动画将为您增加非常好和顺利!

function scrollTopOrBottom(top){
    if(top) $("body, html").animate({scrollTop: 0}, function(){
        scrollTopOrBottom(false);
    });
    else $("body, html").animate({scrollTop: $("document").height()}, function(){
        scrollTopOrBottom(true);
    });
}

scrollTopOrBottom(false);
Run Code Online (Sandbox Code Playgroud)

更新:如上所述,这可能会产生**ahem**Stack Overflow,但此问题并不关心.如果您想要安全,请使用stop()每个$("body, html")语句之后停止调用,如果另一个语句正在进行中,则延迟溢出.

注意:您也可以将if语句包装起来,{}但由于它是一个语句,我发现它更易读,更像句子而不是类似代码.但那是偏好.