Hey guys. I have having a bit of trouble with this script I wrote regarding setInterval. It sometimes just goes crazy and starts firing repeatly even before the interval time has hit.
Basically I have this slider and I want it to slide automatically at intervals and this is the script I have but like I said it goes crazy have a little bit. What am I doing wrong?
var current = 1;
function autoAdvance()
{
if(current === -1) { return false; }
jQuery('#slide_menu ul li a').eq(current%jQuery('#slide_menu ul li a').length).trigger('click',[true]);
current++;
}
var itvl = setInterval(function(){autoAdvance();},8000);
setInterval (as with setTimeout) adds the callback function onto the event queue when the timeout expires – if there is other event handling happening at the same time, this can lead to multiple queued callbacks. I prefer to use setTimeout and have the callback function schedule another timeout. This way you will only schedule the next call once the previous one has completed.
Oh, also, there is no need to wrap autoAdvance in a function in your setInterval.