137

Is there anyway to implement a timer for JQuery, eg. every 10 seconds it needs to call a js function.

I tried the following

window.setTimeout(function() {
 alert('test');
}, 10000);

but this only executes once and then never again.

Afnan Bashir
  • 7,319
  • 20
  • 76
  • 138
Elitmiar
  • 35,072
  • 73
  • 180
  • 229

8 Answers8

216

You can use this:

window.setInterval(yourfunction, 10000);

function yourfunction() { alert('test'); }
Pavel Chuchuva
  • 22,633
  • 10
  • 99
  • 115
Kristof Claes
  • 10,797
  • 3
  • 30
  • 42
50
window.setInterval(function() {
 alert('test');
}, 10000);

window.setInterval

Calls a function repeatedly, with a fixed time delay between each call to that function.

rahul
  • 184,426
  • 49
  • 232
  • 263
45

Might want to check out jQuery Timer to manage one or multiple timers.

http://code.google.com/p/jquery-timer/

var timer = $.timer(yourfunction, 10000);

function yourfunction() { alert('test'); }

Then you can control it with:

timer.play();
timer.pause();
timer.toggle();
timer.once();
etc...
jchavannes
  • 2,440
  • 1
  • 26
  • 15
25

setInterval is the function you want. That repeats every x miliseconds.

window.setInterval(function() {
    alert('test');
}, 10000);
Ikke
  • 99,403
  • 23
  • 97
  • 120
11

jQuery 1.4 also includes a .delay( duration, [ queueName ] ) method if you only need it to trigger once and have already started using that version.

$('#foo').slideUp(300).delay(800).fadeIn(400);

http://api.jquery.com/delay/

Ooops....my mistake you were looking for an event to continue triggering. I'll leave this here, someone may find it helpful.

Craig
  • 6,869
  • 3
  • 32
  • 52
3

try jQueryTimers, they have great functionality for polling

http://plugins.jquery.com/project/timers

Dave Jarvis
  • 30,436
  • 41
  • 178
  • 315
Eggie
  • 127
  • 1
  • 10
2

You can use setInterval() method also you can call your setTimeout() from your custom function for example

function everyTenSec(){
  console.log("done");
  setTimeout(everyTenSec,10000);
}
everyTenSec();
Sid
  • 4,893
  • 14
  • 55
  • 110
Aren Hovsepyan
  • 1,947
  • 2
  • 17
  • 45
-2
function run() {
    window.setTimeout(
         "run()",
         1000
    );
}
harpax
  • 5,986
  • 5
  • 35
  • 49
  • 6
    -1, because providing a string to eval instead of simply providing the function is the root of too many bugs. – vog Dec 21 '10 at 14:18