1
我知道這個問題已被問及之前,我沒有檢查有關以前的帖子,但迄今爲止我的代碼沒有喜悅。我可以讓我的計時器暫停,但是,當我恢復時,它似乎忽略了暫停功能,並且時間顯示爲計時器尚未暫停。JavaScript:暫停計時器
<!DOCTYPE html>
<html>
<head>
<script>
var dt = null;
var val;
function startTimer(){
setTimeout(setTime, 100);
}
function setTime() {
if (dt == null)
dt = new Date();
var totalseconds = parseInt(((new Date()) - dt)/1000, 10);
var hh = parseInt(totalseconds/(60 * 60), 10);
var mm = parseInt((totalseconds - (hh * 60 * 60))/60, 10);
var ss = parseInt(totalseconds - (hh * 60 * 60) - (mm * 60), 10);
document.getElementsByName("txttimer")[0].value = (hh > 9 ? hh : ('0' + hh))
+ ":" + (mm > 9 ? mm : ('0' + mm)) + ":" + (ss > 9 ? ss : ('0' + ss));
val = setTimeout(setTime,1000);
}
function pauseTimer() {
clearTimeout(val);
}
function resumeTimer() {
val = setTimeout(setTime,1000);
}
</script>
</head>
<body>
<form >
<input onclick="startTimer()" type="button" value="START" style="position: absolute;
margin-left: 20%; margin-top: 10%; width: 75px;"/>
<input onclick="pauseTimer()" type="button" value="PAUSE" style="position: absolute;
margin-left: 20%; margin-top: 15%; width: 75px;"/>
<input onclick="resumeTimer()" type="button" value="RESUME" style="position: absolute;
margin-left: 20%; margin-top: 20%; width: 75px;"/>
<input type="text" readonly name="txttimer" style="position: absolute; width: 100px;
margin-left: 30%; margin-top: 10%; text-align: center"/>
</form>
</body>
</html>
如果有人能幫助我,我會非常感激。
不要在字符串中使用'parseInt'! – Bergi
那麼,檢查你如何計算'totalSeconds'(顯示的):從當前時間和'dt' ...你認爲可能需要改變什麼? – Bergi
有幾種方法可以解決這個問題,但是這一切都歸結爲計算從計時器啓動時開始經過的時間,但您沒有考慮暫停的時間。您需要在總時間中減去「已暫停」時間,方法是在您暫停和恢復時記錄該時間。 –