javascript 中只有一个按钮的定时器停止和继续功能
timer stop & continue function in only one button in javascript
我想构建一个由一个开始按钮控制的计时器。单击时,它会将 innertext 更改为“停止”并开始倒计时,当再次单击时,它将更改为“继续”并暂停倒计时。问题是我不知道如何控制 setinterval,因为我在 dfferent if 语句中声明它,我无法从其他地方访问 setinterval 变量。
代码:
const change = document.getElementById("change") -> countdown text part
const sb = document.getElementById("start") // button -> stop & pause
let stop = true;
let i; // setinterval variable
sb.addEventListener("click", () => {
let a = parseInt(change.innerText);
if(stop && a != 0) {
stop = false;
sb.innerText = "Stop";
i = setInterval(()=> {
a --;
change.innerText = a;
if(a == 0) {
stop = true;
alert("Time's Out!")
clearInterval(i);
sb.innerText = "Start";
}
}, 1000)
}
else if (!stop) {
stop = true;
sb.innerText = "continue";
// how to change this part to access setInterval variable i?
}
})
您应该能够在 if-statement 的任一部分中调用 clearInterval
,因为它是在两者的范围之外声明的。看这里,一个工作示例:
const s = document.querySelector('span');
const b = document.querySelector('button');
let interval = null;
b.onclick = () => {
// Start the interval
if (!interval) {
interval = setInterval(() => {
s.innerText = parseInt(s.innerText) - 1;
}, 1000);
b.innerText = "Pause";
} else {
clearInterval(interval);
interval = null;
b.innerText = "Resume";
}
}
<span id="countdown">100</span>
<button>Start</button>
我想构建一个由一个开始按钮控制的计时器。单击时,它会将 innertext 更改为“停止”并开始倒计时,当再次单击时,它将更改为“继续”并暂停倒计时。问题是我不知道如何控制 setinterval,因为我在 dfferent if 语句中声明它,我无法从其他地方访问 setinterval 变量。 代码:
const change = document.getElementById("change") -> countdown text part
const sb = document.getElementById("start") // button -> stop & pause
let stop = true;
let i; // setinterval variable
sb.addEventListener("click", () => {
let a = parseInt(change.innerText);
if(stop && a != 0) {
stop = false;
sb.innerText = "Stop";
i = setInterval(()=> {
a --;
change.innerText = a;
if(a == 0) {
stop = true;
alert("Time's Out!")
clearInterval(i);
sb.innerText = "Start";
}
}, 1000)
}
else if (!stop) {
stop = true;
sb.innerText = "continue";
// how to change this part to access setInterval variable i?
}
})
您应该能够在 if-statement 的任一部分中调用 clearInterval
,因为它是在两者的范围之外声明的。看这里,一个工作示例:
const s = document.querySelector('span');
const b = document.querySelector('button');
let interval = null;
b.onclick = () => {
// Start the interval
if (!interval) {
interval = setInterval(() => {
s.innerText = parseInt(s.innerText) - 1;
}, 1000);
b.innerText = "Pause";
} else {
clearInterval(interval);
interval = null;
b.innerText = "Resume";
}
}
<span id="countdown">100</span>
<button>Start</button>