• Das Erstellen neuer Accounts wurde ausgesetzt. Bei berechtigtem Interesse bitte Kontaktaufnahme über die üblichen Wege. Beste Grüße der Admin

[FRAGE] setTimeout mit Paramter

sodah

Member
Moin,

heute stehe ich bissi auf dem Schlauch.

Meine Parameterübergabe in setTimeout funktioniert nur bedingt.
Ich rufe den SetTimeout innerhalb einer For-Schleife auf und möchte den laufenden Zähler übergeben.
Aber es wird nur jedes mal der letzte Zählerstand übergeben.
Code:
function mediagallery(idname){
......
   function positionieren() {
    ......
     for (var x = 0; x < arr_galleries.length; x++) {
       setTimeout(function(){gallery_titlescrollout(x);}, 100*x);
     }
    }

   function gallery_titlescrollout(zeile){
      console.log(zeile);//hier wird mir nur ständig 13 übergeben, quasi die Größe des Array
   }
}
 
Du hast da ein klassischen Closure-Problem. In der anonymen Funktion, die du an window.setTimeout() übergibst, bezieht sich x wirklich auf die Variable x und speichert nicht den Wert von x, den es beim Erzeugen der anonymen Funktion hat.

Ein möglicher Lösungweg geht über einer weitere anonyme Funktion, die sofort aufgerufen wird:
Code:
     for (var x = 0; x < arr_galleries.length; x += 1) {
       window.setTimeout(
         (function(x){
           return function(){gallery_titlescrollout(x);
         })(x),
         100*x
       );
     }

PS: In JS werden Funktion meistens in camelCase und nicht mit Unterstrich geschrieben.
 
Zurück
Oben