Globale Variable in for Schleife

Guden

Mitglied
Hallo zusammen,

ich definiere eine Variable in einer for Schleife und möchte diese dann in einer anderen for Schleife verwenden. Die Variable lässt sich von überall ansprechen AUSSER in einer anderen for Schleife.
In der ersten Schleife ist die Variable "anzahl" 4 (weil 4 entsprechende Dateien vorliegen), in der zweiten Schleife dann wieder 0. Wenn ich anzahl aus einer anderen Funktion aus ausgebe ist sie ebenfalls 4****? :rolleyes:

Für Aufklärung wäre ich sehr dankbar..

Code:
var anzahl = 0;

for (var i = 0; i < 10; ++i)
$.ajax({url:'images/pre/me_'+i+'.png',
type:'HEAD',
success: function(){
anzahl += 1;
}
});
;


imgProjekt_1 = new Array();
for (var i = 0; i < anzahl; ++i)
  imgProjekt_1[i] = $('<img />').attr({
  src: 'images/pre/me_'+i+'.png',
  height: '100'
});
;
 
Hi Guden,

ich vermute dass es nicht an der Variable liegt. Dein $.ajax() Aufruf ist asynchron, d.h. er wird parallel aufgerufen. Erst ist die anzahl also 0. Die zweite Schleife läuft durch und ruft 10 mal asynchron die $.ajax auf. Die Anfragen werden also gesendet. Währenddessen wird schon die zweite Schleife ausgeführt, obwohl die Anfragen noch gar keine Antwort geliefert haben. Deshalb beinhaltet "anzahl" in der zweiten Schleife nicht den Wert den du erwartest, den hat er erst nach einer gewissen Zeit, wenn alle Anfragen eine Antwort geliefert haben und alle Success-Callback Funktionsaufrufe augeführt wurden.
Eine mögliche Lösung wäre die synchrone Ausführung von $.ajax(). Das kannst du z.B. mit der Einstellung async : false erreichen:
Code:
$.ajax("datei.html", {
    async: false
});

Ich hoffe dass es daran gelegen hat.

Viele Grüße,
Guillermo
 
Zuletzt bearbeitet:
Zurück