SetTimeout内的ClearInterval不起作用

时间:2014-01-24 09:44:56

标签: jquery settimeout fadein setinterval clearinterval

我有这段代码:

 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”继续淡入淡出。我怎么能停止这个间隔?

提前感谢。

3 个答案:

答案 0 :(得分:4)

语法错误。应该是:

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

答案 1 :(得分:2)

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

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

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

类似

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

else
{
// clearInterval here
}
           }, 1000);

答案 2 :(得分:0)

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

var intId = setInterval(function(){