首页 文章

SetInterval即使在我清除之后也会运行

提问于
浏览
0

我在使用setInterval修复问题时遇到了一些麻烦 .

当我点击我的网站上设置var pass = 1的元素时,我有一个运行的函数;

如果你看color1();当传递> 0时,有一个设置的Interval清除它自己;所以如果pass = 1;然后它应该清除它,它确实,但只有在再次运行间隔之后 .

所以它 - 运行setInterval,清除setInterval,然后运行setInterval中的其余代码 . 我需要的是,无需再次运行代码即可清除setInterval .

提前致谢

function color1() {
      var pass = 1;
      var counter = 2;
      var animationSpeed = 800;

      var $colorContent = '.color-container-1 .color-content-container'

      var colorInterval = setInterval(function() {

        if (pass > 0) {
          clearInterval(colorInterval);
        }

        $($colorContent).fadeOut(0);
        $(($colorContent + '-' + counter)).fadeIn(animationSpeed);
        ++counter

        if (counter === $($colorContent).length + 1) {
          counter = 1;
        }

      }, 3000);
    }

1 回答

  • 1

    应该如下,你应该 return 这个功能 . 在这里你已经清除了间隔,但你还没有停止执行

    var colorInterval = setInterval(function() {
    
        if (pass > 0) {
          clearInterval(colorInterval);
          return; //stop here so that it doesn't continue to execute below code
        }
    
        $($colorContent).fadeOut(0);
        $(($colorContent + '-' + counter)).fadeIn(animationSpeed);
        ++counter
    
        if (counter === $($colorContent).length + 1) {
          counter = 1;
        }
    
      }, 3000);
    

相关问题