Reimpostazione di un setTimeout

Ho il seguente:

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

Come posso, tramite una funzione .click, azzerare il contatore a metà del conto alla rovescia?

È ansible memorizzare un riferimento a quel timeout e quindi chiamare clearTimeout su tale riferimento.

 // 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 () e feed il riferimento del setTimeout, che sarà un numero. Quindi ri-invocalo:

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

In questo esempio, se non si fa clic sull’elemento body in 5 secondi, il colore dello sfondo sarà nero.

Riferimento:

Nota: setTimeout e clearTimeout non sono metodi nativi ECMAScript, ma metodi Javascript dello spazio dei nomi globale della finestra.

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

Qualcosa in questo senso!

Dovrai ricordare il timeout “Timer”, cancellarlo, quindi riavviarlo:

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

Questo timer emetterà un avviso “Ciao” dopo 30 secondi. Tuttavia, ogni volta che si fa clic sul pulsante di ripristino del timer, si cancella il timerHandle e quindi lo si reimposta nuovamente. Una volta sparato, il gioco finisce.

     

Per ripristinare il timer, è necessario impostare e cancellare la variabile del timer

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

ecco un esempio elaborato di cosa sta succedendo veramente http://jsfiddle.net/ppjrnd2L/