重置setTimeout

我有以下几点:

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

我怎样才能通过.clickfunction在倒计时中途重置计数器?

您可以存储对该超时的引用,然后在该引用上调用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方法。

 var myTimer = setTimeout(..., 115000); something.click(function () { clearTimeout(myTimer); myTimer = setTimeout(..., 115000); }); 

沿着这些线路的东西!

你将不得不记住超时“计时器”,取消它,然后重新启动它:

 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(); } 

此计时器将在30秒后触发“Hello”警报框。 但是,每次单击重置定时器button时,都会清除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> 

要重置计时器,您需要设置和清除计时器variables

 $time_out_handle = 0; window.clearTimeout($time_out_handle); $time_out_handle = window.setTimeout( function(){---}, 60000 ); 
 $(function() { (function(){ var pthis = this; this.mseg = 115000; this.href = 'file.php' this.setTimer = function() { return (window.setTimeout( function() {window.location.href = this.href;}, this.mseg)); }; this.timer = pthis.setTimer(); this.clear = function(ref) { clearTimeout(ref.timer); ref.setTimer(); }; $(window.document).click( function(){pthis.clear.apply(pthis, [pthis])} ); })(); });