我有以下几点:
window.setTimeout(function() {
window.location.href = 'file.php';
}, 115000);
如何通过.click功能,在倒计时中途重置计数器?
我有以下几点:
window.setTimeout(function() {
window.location.href = 'file.php';
}, 115000);
如何通过.click功能,在倒计时中途重置计数器?
当前回答
您可以存储对该超时的引用,然后在该引用上调用clearTimeout。
// in the example above, assign the result
var timeoutHandle = window.setTimeout(...);
// in your click function, call clearTimeout
window.clearTimeout(timeoutHandle);
// then call setTimeout again to reset the timer
timeoutHandle = window.setTimeout(...);
其他回答
var redirectionDelay;
function startRedirectionDelay(){
redirectionDelay = setTimeout(redirect, 115000);
}
function resetRedirectionDelay(){
clearTimeout(redirectionDelay);
}
function redirect(){
location.href = 'file.php';
}
// in your click >> fire those
resetRedirectionDelay();
startRedirectionDelay();
这里有一个详细的例子,说明到底发生了什么http://jsfiddle.net/ppjrnd2L/
要重置计时器,您需要设置并清除计时器变量
$time_out_handle = 0;
window.clearTimeout($time_out_handle);
$time_out_handle = window.setTimeout( function(){---}, 60000 );
该计时器将在30秒后发出“Hello”警报框。然而,每次你点击重置计时器按钮,它会清除timerHandle,然后重新设置它。一旦发射,游戏就结束了。
<script type="text/javascript">
var timerHandle = setTimeout("alert('Hello')",3000);
function resetTimer() {
window.clearTimeout(timerHandle);
timerHandle = setTimeout("alert('Hello')",3000);
}
</script>
<body>
<button onclick="resetTimer()">Reset Timer</button>
</body>
对于NodeJS来说,这非常简单:
const timeout = setTimeout(...);
timeout.refresh();
从文档中可以看出:
timeout.refresh () 将计时器的开始时间设置为当前时间,并重新安排计时器以在先前指定的调整为当前时间的持续时间内调用其回调。这对于在不分配新JavaScript对象的情况下刷新计时器非常有用。
但它在JavaScript中不起作用,因为在浏览器中setTimeout()返回的是一个数字,而不是一个对象。
您可以存储对该超时的引用,然后在该引用上调用clearTimeout。
// in the example above, assign the result
var timeoutHandle = window.setTimeout(...);
// in your click function, call clearTimeout
window.clearTimeout(timeoutHandle);
// then call setTimeout again to reset the timer
timeoutHandle = window.setTimeout(...);