function slide() { if($('.current').is(':last-child')){ $('.current').removeClass('.current'); $('#imgholder').first().addClass('.current'); $('#imgholder').animate({left: '3920px'}); } else{ $nxt=$(".current"); $(".current").removeClass("current"); $nxt.next().addClass("current"); $('#imgholder').animate({left: '-=980'},{duration: 'slow', easing: 'easeOutBounce' }); } } var loop_handle= setTimeout("slide()",'3000');
I have put this code in header section and the setTimeout runs only once.
That's because setTimeout() is supposed to run only once. In order to fire an event on set intervals user setInterval() .
There are two methods for it: setTimeout allows us to run a function once after the interval of time. setInterval allows us to run a function repeatedly, starting after the interval of time, then repeating continuously at that interval.
As specified in the HTML standard, browsers will enforce a minimum timeout of 4 milliseconds once a nested call to setTimeout has been scheduled 5 times.
No, setTimeout does not pause execution of other code.
setTimeout
should only run once. You're looking for setInterval
.
var loop_handle = setInterval(slide, 3000);
Also, the second argument should be a number, not a string. When the function call doesn't require any arguments, it's better to reference to the function instead of using a string. A string would be converted to a function. This function will be executed within the scope of the window.
setInterval("slide()", 3000); //becomes setInterval(Function("slide();"), 3000);
Yes, setTimeout only runs once. You want setInterval
. This function also returns an ID you can use to cancel the interval. For example:
const slideInterval = setInterval(slide, 3000); // later... clearInterval(slideInterval);
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With