2014-01-24 46 views
0

我有這樣的代碼:ClearInterval就是裏面的setTimeout不工作

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不工作。所以,當我在其他情況下(和我去那裏,我已經測試過,所以如果案例工作正常),那麼我的div「myDiv1」繼續淡入和淡出。我怎樣才能停止這段時間?

在此先感謝。

回答

4

你在你的語法錯誤。應該是:

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

感謝,但這個只是一個錯字。對不起,我會改變它。然而,在我的項目中是正確的。所以這不是問題 – novellino

0

嘗試使用var來初始化intId變量:

var intId = setInterval(function(){ 
+0

謝謝,但也沒有工作。 – novellino

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

好的我改變了我的代碼,你可以在上面看到。但仍然沒有工作。 – novellino

+0

你在哪裏重置爲0?我最初假設flag = 1。 –

+0

當我console.log睡眠就在setInterval行之前,我得到正確的值,在0和1之間變化。因此,如果「旗」的情況下工作正常。 – novellino