Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/421.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 递归调用java脚本动画函数,每次循环后计时_Javascript_Animation_Jquery Animate - Fatal编程技术网

Javascript 递归调用java脚本动画函数,每次循环后计时

Javascript 递归调用java脚本动画函数,每次循环后计时,javascript,animation,jquery-animate,Javascript,Animation,Jquery Animate,在ready函数scrollDown动画开始中,在scrollDown的完整回调侦听器中,我调用了scrollUp函数开始向上滚动动画。循环完成后,向下滚动动画需要一些时间重新开始更重要的是,每个循环完成后延迟时间增加。 $(document).ready(function(){ scrollDown(); }); function scrollDown(){ $('html, body').animate({ scrollTop:$("#4").offset().

在ready函数scrollDown动画开始中,在scrollDown的完整回调侦听器中,我调用了scrollUp函数开始向上滚动动画。循环完成后,向下滚动动画需要一些时间重新开始更重要的是,每个循环完成后延迟时间增加。

$(document).ready(function(){
   scrollDown();
});
function scrollDown(){
    $('html, body').animate({
        scrollTop:$("#4").offset().top-100
    },
    {
        duration:2000,
        complete: function(){
           scrollUp();
        }
    });
}
function scrollUp(){
        $('html, body').animate({
            scrollTop:$("#1").offset().top-100
        },
        {
            duration:2000,
            complete: function(){
               scrollDown();
            }
        });
}
添加$('html,body').stop()完成了这个技巧,现在动画是平滑的,没有延迟时间。但是为什么我必须调用stop()函数呢?因为我已经实现了完成回调

$(document).ready(function(){
   scrollDown();
});
function scrollDown(){
    $('html, body').stop(); // no idea why I need to call this stop function
    $('html, body').animate({
        scrollTop:$("#4").offset().top-100
    },
    {
        duration:2000,
        complete: function(){
           scrollUp();
        }
    });
}
function scrollUp(){
        $('html, body').stop(); // no idea why I need to call this stop function
        $('html, body').animate({
            scrollTop:$("#1").offset().top-100
        },
        {
            duration:2000,
            complete: function(){
               scrollDown();
            }
        });
}