0
這裏是我的代碼:的setInterval和clearInterval通過按鈕單擊事件
window.onload = runThis;
function runThis() {
const txtMin = document.getElementsByClassName("min");
const txtSec = document.getElementsByClassName("sec");
function go() {
setInterval(countDown, 1000);
}
function countDown() {
timeNow = timeNow - 1;
timeSec = timeNow % 60; //remainder as seconds
timeMin = Math.round((timeNow/60) - (timeSec/60)); //minutes
txtMin[0].innerText =
(timeMin > 0 ?
(timeMin >= 10 ? `${timeMin}:` : `0${timeMin}:`)
: "00:");
txtSec[0].innerText =
(timeSec > 0 ?
(timeSec >= 10 ? timeSec : `0${timeSec}`)
: "00");
}
function stopIt() {
let x = setInterval(countDown, 1000);
clearInterval(x);
}
const btnStart = document.getElementsByClassName("start");
btnStart[0].addEventListener("click", go);
const btnStop = document.getElementsByClassName("stop");
btnStop[0].addEventListener("click", stopIt);
}
我有麻煩試圖建立的setInterval和clearInterval。 2個按鈕:start
和stop
。當我點擊start
來啓動計時器時,我想讓功能go
運行。這很好。我的問題是試圖停止計時器。
如果我把let x = setInterval(countDown, 1000);
的stopIt()
功能之外,它會自動啓動定時器上windows.onload
不管我是否點擊start
按鈕,但在這樣做,我可以停止計時器。
如果我把let x = setInterval(countDown, 1000);
喜歡什麼我這裏有stopIt()
功能裏面,我就可以開始,每當我想通過點擊按鈕start
計時器,但現在我可以用clearInterval()
沒有停止計時。
任何幫助,非常感謝。提前致謝!
你能解釋一下這背後的邏輯?我問的是因爲'var intervalID = setInterval(countDown,1000);''go'函數之外'自動運行它。它是否就像是我每次點擊「開始」或「停止」時都會替換它的標誌? – Rumba
邏輯很簡單。 setInterval()返回一個用來識別該循環的ID,因此,如果啓動它,變量「intervalID」將被標記,因此,可以在函數外使用該變量來停止stopIt()中標記的時間間隔。功能。如果要控制go()和stopIt()函數的行爲正確,請修改它們以在var intervalID爲null或不是null的情況下運行(或停止)。 –