Skip to content Skip to sidebar Skip to footer

Calling Settimeout With A For Loop

I've written a function that changes the css positioning of a div I've been successfully using setTimeout to call the function at a specific interval NOW what I'm trying to do is c

Solution 1:

You need to "anchor" the value of your loop iterator, otherwise it keeps incrementing and all the intervals affect the 29th one, which doesn't exist.

for(var x=0; x<28; x++) {
    (function(x) {
        // code goes here
    })(x);
}

However, 28 timers on one page is a really bad idea. Consider rewriting your code so that you only have one interval that calculates the new positions based on the speed value.

Solution 2:

My approach to these self calling functions.

var i = -1;
(functioncssPositioning() {
  i++;
  if ( i < 28 ) {
            changeDirection(divlist[i]);
    setInterval(cssPositioning, divs[divlist[i]].speed);
  }
})();

Solution 3:

Based on @Kolink's explanation, you can try

for (var x = 0; x < 28; x++){ 
   setInterval(function(){
     var local = x;  //anchor the variable  changeDirection(divlist[local])}, divs[divlist[local]].speed);
   });
}

Hope this helps.

Post a Comment for "Calling Settimeout With A For Loop"