Lukas: globale/lokale Variablen

Beitrag lesen

Ich habe das Problem das eine Variable die ich unbedingt global brauche

Nein, du möchtest nur zum richtigen Zeitpunkt Zugriff auf eine Variabel haben.

function complete(){
switch (request.readyState){
case 0:
case 1:
case 2:
case 3: return;
case 4: out = request.responseText; break;

}
  alert(out);
}

complete wird ausgeführt wenn der Request erfolgt und nur dann wird der variabel out ein Wert zugewiesen.

Genau das ist mein Problem, ich möchte das der Variablen !ab dann! auf
unbestimmte Zeit ein Wert zugewiesen wird, wann Complete ausgeführt wird
weiss ich, ist schließlich mein Script, ich halte nämlich nichts von
script-copy-and-paste
:-)

alert(out);

Dieses alert() erfolgt viel früher, da ist out undefniert.

PS beim ersten alert wird der Text korrekt wiedergegeben, beim Zweiten wird
gar nichts angezeigt und die Variable zuvor mit "var out = null;" zu
deklarieren wirft "Null" zurück.

Es kommt nicht auf zuvor und danch an, sondern auf die Reihenfolge der Ausführung und der Code in der Funktion complete() kommt erst am Schluss.

Vergiss "zuvor" das war mehr als "zunächst" gedacht, also Hauptsache
deklariert.

Du musst versuchen von einer linearen Denkweise wegzukommen, JS ist Eventstrukturiert, d.h. viele Dinge passieren nebenläufig und bei AJAX ist das ganz besonders der Fall.

Tut mir leid ich bin erst seit ein paar Tagen dabei mit JS zu arbeiten
aber vieles schaff ich durch Probieren und nachdenken , dieses Problem
allerdings erwischt mich ziemlich hart.

Wenn du also die Variabel out für irgendwas brauchst, musst du dies in der Funktion complete() tun an keiner anderen Stelle.

Das ist aber sehr ungünstig, wenn mann die Variable in einem ganz anderen
Script-teil, in einer anderen Datei braucht!