翻閱古今
2019-03-12 17:08:32
是用setInterval每10ms調用一次倒計時方法,想讓計時器在倒計時的時候點擊停止能暫停,再點能繼續 var FnSec=function(){ sec.innerHTML-=1; if(sec.innerHTML<0){ sec.innerHTML="100"; time.innerHTML-=1; } if(time.innerHTML.length<2){ time.innerHTML="0"+time.innerHTML; } if(sec.innerHTML.length<2){ sec.innerHTML="0"+sec.innerHTML; } if (sec.innerHTML==0 && time.innerHTML==0) { clearInterval(secInterValId); var audio = document.getElementById("bgMusic"); audio.play(); window.alert("時間到!"); audio.pause(); start.innerHTML="開始"; inputDisable.style.display="none"; input.style.display="block"; resetDisable.style.display="block"; reset.style.display="none"; time.innerHTML="10"; sec.innerHTML="00"; } } var secInterValId=setInterval(FnSec,10); start.innerHTML="停止";剛學前端,今天剛學了間歇調用,小白搗鼓了一晚上都不行,沒轍了,求大神幫忙看一下??!
2 回答

喵喵時光機
TA貢獻1846條經驗 獲得超7個贊
secInterValId 改成全局變量,使得可以保存上一次的 setInterval 值。否則每次點擊同一個按鈕 secInterValId 都將被重置
以下偽代碼僅供參考
(function () {
var secInterValId = null
startBtn.addEventListener('click', () => {
secInterValId = setInterval(fn, 10)
})
pauseBtn.addEventListener('click', () => {
clearIntervalId(secInterValId)
})
}())

交互式愛情
TA貢獻1712條經驗 獲得超3個贊
我給個另外的思路,直接加個狀態變量進行控制就行了,比如說:
var paused = false,
timer = null;
function loop(){
timer = setTimeout(loop,10);
if(paused) return false;
//這里主代碼
}
//當你需要暫停的時候,改變paused的值就行了,這當你在一個計時器下,需要分開管理不同功能的狀態的時候很有用。如果確實需要銷毀計時器,再clear(timer)變量就行
添加回答
舉報
0/150
提交
取消