我有以下几点:
window.setTimeout(function() {
window.location.href = 'file.php';
}, 115000);
如何通过.click功能,在倒计时中途重置计数器?
我有以下几点:
window.setTimeout(function() {
window.location.href = 'file.php';
}, 115000);
如何通过.click功能,在倒计时中途重置计数器?
当前回答
你必须记住超时“Timer”,取消它,然后重新启动它:
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();
}
其他回答
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元素,背景颜色将是黑色。
参考:
https://developer.mozilla.org/en/DOM/window.clearTimeout https://developer.mozilla.org/En/Window.setTimeout
注意:setTimeout和clearTimeout不是ECMAScript的原生方法,而是全局窗口命名空间的Javascript方法。
您可以存储对该超时的引用,然后在该引用上调用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/
你必须记住超时“Timer”,取消它,然后重新启动它:
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();
}
要重置计时器,您需要设置并清除计时器变量
$time_out_handle = 0;
window.clearTimeout($time_out_handle);
$time_out_handle = window.setTimeout( function(){---}, 60000 );