2016-11-15 10 views
0

我在jQuery中創建了一個倒計時,但我有一個問題。當計數到達01:00它被卡住,而不是繼續上到00:59爲0倒計時被卡在01:00

var start = $('#start'); 
var countMinutes = 2; 

var timer; 
start.on('click', function(event) { 
    event.preventDefault(); 
    new Timer(function(val, countMinutes) { 
    timerMsg = (countMinutes >= 10 ? countMinutes : '0' + countMinutes) + ':' + (val >= 10 ? val : '0' + val); 
    time.text(timerMsg); 
    }); 
}); 

function Timer(callback, val, m) { 
    val = val || 59; 
    m = countMinutes; 
    timer = setInterval(function() { 
    callback(val, m); 
    if (val-- <= 0) { 
     m -= 1; 
     if (m < 1 && val <= 0) { 

     clearInterval(timer); 
     } 
     countMinutes = 0; 
     val += 60; 
    } 
    }, 1000); 
} 

我的html分鐘。

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
<h1 id="timer"><span id="time">10:00</span></h1> 
<a href="#" id="start">Start</a> 
+1

'如果(M <1 && VAL <= 0){''如果是M'分鐘會發生什麼? –

+1

僅供參考:setInterval不準確。 – epascarello

+0

爲什麼setInterval不準確? –

回答

3

變化

if (m < 1 && val <= 0) { 

if (m < 0 && val <= 0) { 
+0

https://jsfiddle.net/Lhhh8kr7/1/爲您的方便 –

-3

var countMinutes = 2; 
 
var timer; 
 

 
$('#start').on('click', function(event) { 
 
    event.preventDefault(); 
 
    new Timer(function(val, countMinutes) { 
 
    timerMsg = (countMinutes >= 10 ? countMinutes : '0' + countMinutes) + ':' + (val >= 10 ? val : '0' + val); 
 
    $('#time').text(timerMsg); 
 
    }); 
 
}); 
 

 
function Timer(callback, val, m) { 
 
    val = val || 59; 
 
    m = countMinutes; 
 
    timer = setInterval(function() { 
 
    callback(val, m); 
 
    if(val-- <= 0) { 
 
     m -= 1; 
 
     if(m < 0 && val <= 0) { 
 

 
     clearInterval(timer); 
 
     } 
 
     countMinutes = 0; 
 
     val += 60; 
 
    } 
 
    }, 1000); 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 

 
<h1 id="timer"> 
 
    
 
<span id="time">10:00</span></h1> 
 

 
<a href="#" id="start">Start</a>

+0

這可能是一個好主意,解釋你改變了什麼,爲什麼。只是複製/粘貼代碼並沒有真正教會任何人:-) – Carpetsmoker

+0

你是對的,因爲代碼工作,我不想添加更多的評論,然後代碼片段,這個代碼的問題是,我們不能通過讀取它來理解每個變量的含義 – thefailtheory

+0

當您輸入Timer函數,val = 59或其實際值並將m = countMinutes作爲全局變量時,回調函數設置每秒由setInterval設置顯示的文本,然後你有如果然後其他只是評估如果計時器到達0或不,但我不明白最後兩行countMinutes = 0;和val + = 60 – thefailtheory