重置设置超时

2022-08-30 01:21:27

我有以下几点:

window.setTimeout(function() {
    window.location.href = 'file.php';
}, 115000);

如何通过 .click 功能在倒计时中途重置计数器?


答案 1

您可以存储对该超时的引用,然后对该引用调用 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(...);

答案 2

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 方法。