【问题标题】:ClearInterval that is inside a setTimeout not workingsetTimeout 内的 ClearInterval 不起作用
【发布时间】:2014-01-24 09:44:56
【问题描述】:

我有这个代码:

 function myf(){    
    setTimeout(function(){
        if(flag === 1){
            sleep = 1;
        }else{
            sleep = 0;
        }
        myMove();
        myf();      
  }, 6000); 

  function myMove(){
      var intId = setInterval(function(){
        if(sleep === 0){
             clearInterval(intId);
             return false;
        }else{
             $("#myDiv1").fadeIn(1000);
             $("#myDiv1").fadeOut(1000);
        }
      }, 1000);
   }

我的问题是 clearInterval 不起作用。所以当我在其他情况下(我要去那里,我已经测试过了,所以 if 情况工作正常)然后我的 div "myDiv1" 继续淡入淡出。我怎样才能停止这个间隔?

提前致谢。

【问题讨论】:

    标签: jquery settimeout fadein setinterval clearinterval


    【解决方案1】:

    您的语法有误。应该是:

    if (flag === 1) { ... }
    

    【讨论】:

    • 谢谢,但这只是一个错字。对不起,我会改变它。但是在我的项目中是正确的。所以这不是问题
    【解决方案2】:

    它永远不会调用清除间隔函数,因为你的 setinterval 函数是

    intId = setInterval(function(){
                    $("#myDiv1").fadeIn(1000);
                    $("#myDiv1").fadeOut(1000);
               }, 1000);
    

    所以这段代码会在每个时间间隔后被调用..在那个函数中你必须检查标志然后你必须编写终止间隔函数..

    类似

    intId = setInterval( function(){
                    if(flag==1) 
    {
                    $("#myDiv1").fadeIn(1000);
                    $("#myDiv1").fadeOut(1000);
    }
    
    else
    {
    // clearInterval here
    }
               }, 1000);
    

    【讨论】:

    • 好的,我改变了我的代码,你可以在上面看到。但还是不行。
    • 你在哪里将平面重置为 0?我最初假设 flag=1。
    • 当我在 setInterval 行之前 console.log 睡眠时,我得到了正确的值,在 0 和 1 之间变化。所以带有“标志”的 if 情况正常。
    • 您的具体要求是什么??当你想显示那些 div 和当你想关闭它们时(时间间隔).. 现在你有 2 个循环。每 6 秒运行一次,每 1 秒运行 1 次(在 setinterval 将被调用的那 6 秒之后。)无论如何.. 这可能工作正常.. jsfiddle.net/wRhFu
    • 第一个循环改变了我页面的背景。因此,当背景有一个 id 然后标志 == 1 时,我想第二个循环开始每 1 秒运行一次(就像图像每隔一秒改变一次),直到第一个背景失去它的 id,所以我们有标志 = 0。
    【解决方案3】:

    尝试使用var 初始化您的intId 变量:

    var intId = setInterval(function(){
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-01-17
      • 2021-05-18
      • 2012-05-06
      • 2014-03-03
      • 2021-11-29
      • 2021-05-12
      相关资源
      最近更新 更多