3 回答
TA贡献1801条经验 获得超8个赞
如果在 startTimer 函数中声明了 count 变量,则计时器的每次迭代都将覆盖其计数值,因此不会倒计时。
setInterval无限重复其功能,因此只需要在循环外调用一次,而不是setTimeout只运行一次并且每次迭代都需要调用。
另一种使用方法setTimeout是:
function startTimer(count) {
if (count <= 0) {
ranCoord();
} else {
document.getElementById("target").innerText = count;
setTimeout(function() { startTimer(--count); }, 1000);
}
}
此版本还通过将剩余计数作为参数传递来避免使用全局变量。
TA贡献1821条经验 获得超6个赞
您无需startTimer致电setInterval
var count = 3;
function startTimer() {
var timer = setInterval(function() {
if (count === 0) {
clearInterval(timer);
ranCoord(); //function to run when timer hits zero.
} else {
document.getElementById("target").innerText = count;
count--;
}
}, 1000);
}
function ranCoord() {
console.log("Timer hit 0")
}
img {
height: 100px;
width: 100px;
outline: 1px solid blue;
}
<div class="start">
<img src="images/start-default.png" onclick="startTimer();" />
</div>
<div id="target"></div>
TA贡献1846条经验 获得超7个赞
我认为您不需要添加更多代码,您只需要像这样简化它
var count = 3;
function startTimer() {
const timer = setInterval(function () {
document.getElementById("target").innerText = count;
count--;
if (count <= 0) {
clearInterval(timer);
ranCoord();
}
}, 1000)
}
添加回答
举报