【发布时间】:2014-08-31 04:16:49
【问题描述】:
代码:
var n = 360; // 6 min of waiting after blocked
function countDown() {
n--;
if (n > 0) {
setTimeout(countDown, 1000);
}
$("span#waitcount").html(document.createTextNode(n));
}
var count = 50; // Count of tokens when reached 0 block the page
var counter = document.getElementById('counter');
var clickDisabled = false;
$('.slotMachineButton').click(function() {
if (clickDisabled)
return;
setTimeout(function() {
count--;
counter.innerHTML = count;
if (count === 0) {
$.blockUI({message: '<h1>Thank you for Playing!!!<br>Please wait for 6 munites to be able to play again.</h1>'});
setTimeout(function() {
$.unblockUI({
onUnblock: function() {
alert('Game has been resumed!!!');
}
});
}, 10000);
setTimeout(countDown, 1000);
}
});
clickDisabled = true;
setTimeout(function() {
clickDisabled = false;
}, 3000);
}
目标:
当令牌计数达到 0 时,将其恢复为原始值以重新开始另一个计数,因为只要计数达到 0,它就会变为 -1 并继续计数。
当 6 分钟等待结束后开始另一个等待,我不知道我是否获得了适合这部分的代码,但请检查一下。
【问题讨论】:
-
好吧,你少了一个括号。此外,如果您想每 1000 毫秒重复一次函数调用,则应使用 setInterval,而不是递归调用 setTimeout。此外,您没有指定在代码中的何处重置 count 和 n 的值。最后,如果您唯一的问题是“请检查”,它不属于 StackOverflow。
-
与其减少计数器,不如保存计时器开始时的时间戳(通过
Date.now()),然后从当前时间中减去该时间,然后查看是否超过 360 秒已经通过。 Timers in JS 不准确,您可以保证您的回调将在 最少 段时间后触发;计时器触发回调可能需要更长的时间。 -
count--和n--喊在函数末尾,必须重置。
标签: javascript jquery variables return countdown