2017-05-08 99 views
0

我希望動畫在點擊次數達到特定數量時停止。 爲什麼第一個片段有效,而第二個片段沒有。 唯一的區別是clearInterval被調用。 這個作品---停止動畫。有人能告訴我爲什麼這些JavaScript代碼中的一個工作,而其中一個不工作?

var intervalId = setInterval(moveHeading, intervalLength); 
var intervalLength = 120; 
var clicks = 0; 
$("#heading").click(function() { 
    clearInterval(intervalId); 
    clicks++; 
    intervalLength /= 2; 
    if (clicks >= 3) { 
     $("#heading").text("You Win!"); 
    } else { 
     $("#heading").text(clicks); 
     intervalId = setInterval(moveHeading, intervalLength); 
    } 
}); 

但是,這一個將無法正常工作---不停止動畫。

var intervalId = setInterval(moveHeading, intervalLength); 
var intervalLength = 120; 
var clicks = 0; 
$("#heading").click(function() { 
    clicks++; 
    intervalLength /= 2; 
    if (clicks > 3) { 
     clearInterval(intervalId); 
     $("#heading").text("You Win!"); 
    } else { 
     $("#heading").text(clicks); 
     intervalId = setInterval(moveHeading, intervalLength); 
    } 
}); 
+2

在第二個示例中,您多次堆疊'setInterval'。事實上,當'clicks> 3'時,你用'clearInterval'來停止它,但你實際上已經有3個其他的時間間隔在運行。 – choz

回答

0

放在了第一位,你clearInterval,然後覆蓋intervalId當你打電話setInterval,所以你永遠不會有一個setInterval仍在運行,在那裏你不再知道intervalId

在第二個,如果clicks <= 3,那麼你將覆蓋intervalId,但你永遠不清除運行setInterval,因此它會繼續運行,你將永遠無法clearInterval就可以了,因爲你不知道它是做身份證(你可以清除你創建的任何新的時間間隔)。

+0

謝謝我現在得到它。 – Hadi

0

setInterval()方法將每1秒執行一次該功能,就像數字手錶一樣。 我們必須使用clearInterval()來停止時間。 它清除使用setInterval()方法設置的計時器。 您必須使用它才能停止動畫。

相關問題