我正在忙着制作纸牌游戏。我想给用户一个可见的倒计时,然后在屏幕上显示一张卡片。我的倒计时脚本如下所示:
let downSeconds = 5;
while (downSeconds > 0) {
setTimeout(function() {
$("#timerDisplay").text = downSeconds;
downSeconds--;
}, 1000);
}
$(".detail-card").removeClass("hidden");
如果我不想要更新的秒数,我将使用5000ms的“ setTimeOut”。在尝试使用
setInterval
之前,我做了一下,延迟为1000ms,因此每次经过它都会更新秒。现在,如果我在
setTimeOut
回调的任一行上都设置了一个断点,并且仅在该断点处调用setTimeout
时什么也没有发生,所以秒显示永远不会更新,并且我陷入了无限循环,因为不会被调用,因此downSeconds--;
始终保持值为5。我究竟做错了什么?
最佳答案
setTimeout稍后运行代码,而while循环运行“ now”。您无法成功地将两者结合起来。.因此,您必须以不同的方式编写代码,这样的方法应该起作用:
let downSeconds = 5;
function doCountDown() {
downSeconds--;
$("#timerDisplay").text = downSeconds;
if (downSeconds > 0) {
setTimeout(doCountDown, 1000);
} else {
$(".detail-card").removeClass("hidden");
}
}
setTimeout(doCountDown, 1000);