0
我在做一個時間對象,但是我在clearInterval中遇到了一些奇怪的事情,但真的是一般的函數。相關代碼如下所示:clearInterval不是在wow和wow中發出奇怪的聲音
var timer = {
timerStarted: false,
startTimer: function(){
var howMuchTime = parseInt($('#timer-button-number').text());
var timesUpAt = Date.now() + howMuchTime*60*1000;
var start = new Date().getTime();
var milseccount = timesUpAt - start;
function sectimer(){
var remaining = Math.floor(milseccount - (new Date().getTime() -
start));
if (remaining <= 0) {
clearInterval(x);
}
var minutes = Math.floor((remaining % (1000*60*60))/(1000*60));
var seconds = Math.floor((remaining % (1000*60))/1000);
//display results
$('#timer-button-number').text(minutes + 'm ' + seconds + 's');
}
var x = null;
if (!timer.timerStarted) {
x = setInterval(sectimer, 100);
timer.timerStarted = true;
} else if (timer.timerStarted){
clearInterval(x);
timer.timeStarted = false;
console.log(timer.timeStarted);
}
}
}
所以點擊按鈕,定時器啓動,timer.timeStarted交換機到真正的價值。但是當再次點擊該按鈕時,間隔不會被清除。 timer.timeStarted切換爲false,但當再次單擊該按鈕時,if語句的第二部分繼續執行(除clearInterval部分之外的所有部分),就好像if語句不指示間隔應該再次啓動一樣即使它從未真正停止過)。有人可以幫忙嗎?
每次'startTimer所()'被稱爲'x'會是null,因爲你做了'var x = null' –
如果你會檢查'x'的值,你就會知道問題是什麼。 – trincot
運行它是因爲得到我的x未定義。同樣的事情,如果我把聲明移到開頭。如果我將x設置爲setInterval之外的if語句x每次都變成某些東西,但clearInterval仍然不起作用,並且第二個語句每次都運行timer.timeStated值。問題仍然沒有解決 –