我有以下几点:
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(...);
clearTimeout() 并提供 setTimeout 的引用,这将是一个数字。然后重新调用它:
var initial;
function invocation() {
alert('invoked')
initial = window.setTimeout(
function() {
document.body.style.backgroundColor = 'black'
}, 5000);
}
invocation();
document.body.onclick = function() {
alert('stopped')
clearTimeout( initial )
// re-invoke invocation()
}
在这个例子中,如果你在 5 秒内没有点击 body 元素,背景颜色将是黑色。
参考:
注意:setTimeout 和 clearTimeout 不是 ECMAScript 原生方法,而是全局窗口命名空间的 Javascript 方法。
您必须记住超时“计时器”,取消它,然后重新启动它:
g_timer = null;
$(document).ready(function() {
startTimer();
});
function startTimer() {
g_timer = window.setTimeout(function() {
window.location.href = 'file.php';
}, 115000);
}
function onClick() {
clearTimeout(g_timer);
startTimer();
}
var myTimer = setTimeout(..., 115000);
something.click(function () {
clearTimeout(myTimer);
myTimer = setTimeout(..., 115000);
});
沿着这些路线的东西!
此计时器将在 30 秒后触发“您好”警报框。但是,每次单击重置计时器按钮时,它都会清除 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>