Loop timer in JavaScript
Note that setTimeout
and setInterval
are very different functions:
-
setTimeout
will execute the code once, after the timeout. -
setInterval
will execute the code forever, in intervals of the provided timeout.
Both functions return a timer ID which you can use to abort the timeout. All you have to do is store that value in a variable and use it as argument to clearTimeout(tid)
or clearInterval(tid)
respectively.
So, depending on what you want to do, you have two valid choices:
// set timeout
var tid = setTimeout(mycode, 2000);
function mycode() {
// do some stuff...
tid = setTimeout(mycode, 2000); // repeat myself
}
function abortTimer() { // to be called when you want to stop the timer
clearTimeout(tid);
}
or
// set interval
var tid = setInterval(mycode, 2000);
function mycode() {
// do some stuff...
// no need to recall the function (it's an interval, it'll loop forever)
}
function abortTimer() { // to be called when you want to stop the timer
clearInterval(tid);
}
Both are very common ways of achieving the same.
setInterval(moveItem, 2000);
is the way to execute the function moveItem
every 2 seconds. The main problem in your code is that you're calling setInterval
inside of, rather than outside of, the callback. If I understand what you're trying to do, you can use this:
function moveItem() {
jQuery('.stripTransmitter ul li a').trigger('click');
}
setInterval(moveItem, 2000);
N.B.:Don't pass strings to setTimeout
or setInterval
- best practice is to pass an anonymous function or a function identifier (as I did above). Also, be careful to not mix single and double quotes. Pick one and stick with it.
I believe you are looking for setInterval()