Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/477.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 停止动画播放多次_Javascript_Jquery - Fatal编程技术网

Javascript 停止动画播放多次

Javascript 停止动画播放多次,javascript,jquery,Javascript,Jquery,我有这个JS代码。每当我滚动到skills div时,动画就会重复。我希望它只在用户到达div时加载一次,然后永远不要重复,除非再次加载页面 $(function() { var oTop = $('#skills').offset().top - window.innerHeight; var x = true; $(window).scroll(function(){ var pTop = $('body').scrollTop();

我有这个JS代码。每当我滚动到skills div时,动画就会重复。我希望它只在用户到达div时加载一次,然后永远不要重复,除非再次加载页面

$(function() {
    var oTop = $('#skills').offset().top - window.innerHeight;
    var x = true;

    $(window).scroll(function(){

        var pTop = $('body').scrollTop();
        console.log( pTop + ' - ' + oTop ); 
        if(pTop > oTop){
              start_doughnut_animation();

        }
    });
});

它即使在我正在执行的动画中间滚动,我尝试使用布尔但它不工作

让你自己从循环中逃脱。


首先检查功能是否已运行。例如,如果var executed为false,则运行动画函数。在动画结束时,将escape变量executed设置为true。

您可以添加一个标志变量,例如:

$(function() {
    var oTop = $('#skills').offset().top - window.innerHeight;
    var x = true,
        oneTime = false;

    $(window).scroll(function(){

        var pTop = $('body').scrollTop();
        console.log( pTop + ' - ' + oTop ); 
        if(pTop > oTop && !oneTime){  // check if oneTimeis also false
              start_doughnut_animation();
              oneTime = true; // set oneTime so this can't happen again
        }
    });
});

您可以使用jquery api one将元素设置为只运行一次,例如使用

 $(window).one( "scroll", function() {
您可以在这里找到更多文档