How can I repeat a function doSomething()
every 5 seconds.
I also need code that will make it stop doing it.
And code to on-the-fly adjust the f
setTimeout() will only launch the command once. In this case, setInterval() is your friend.
var iFrequency = 5000; // expressed in miliseconds
var myInterval = 0;
// STARTS and Resets the loop if any
function startLoop() {
if(myInterval > 0) clearInterval(myInterval); // stop
myInterval = setInterval( "doSomething()", iFrequency ); // run
}
function doSomething()
{
// (do something here)
}
from code...
<input type="button" onclick="iFrequency+=1000; startLoop(); return false;"
value="Add 1 second more to the interval" />
Use
setInterval
Calls a function repeatedly, with a fixed time delay between each call to that function.
for repeated action and
clearInterval
Cancels repeated action which was set up using setInterval().
to stop that
You could use setTimeout() for this.
http://www.w3schools.com/htmldom/met_win_settimeout.asp
<script type="text/javascript">
var t; var timer_is_on=0; var timeout=5000;
function timedCount() {
doSomeThing();
t = setTimeout("timedCount()",timeout);
}
function doTimer() {
if (!timer_is_on) {
timer_is_on=1;
timedCount();
}
}
function stopCount() {
clearTimeout(t);
timer_is_on=0;
}
function changeFreq() {
timeout = 2000;
}
</script>