JavaScript zur Nacht

JavaScript zur Nacht

Nach einem mehr oder minder Durchhänger-Tag (aber was will ich erwarten wenn ich morgens so wie heute geweckt werde?) habe ich noch ein kleines Betthupferl. Selbst beim einkaufen im Supermarkt meiner Qual ging mir eine Frage nicht aus dem Kopf. Mir schien es bei meinem Skript, als wenn die Initialisierung einer Variable am Anfang des Skriptes nicht möglich sei:


<script type="text/javascript">
//<![CDATA[
var hex=0; //start color value
var loading = document.getElementById("transmissionstatus");

Auf die Variable hex konnte ich im weiteren Verlauf problemlos in den Funktionen zugreifen. Bei loading gab es immer eine Fehlermeldung. Die Lösung ist, wie so oft, relativ einfach. Das Skript befindet sich vor dem HTML-Teil und damit auch vor dem Objekt mit der ID. Daher existiert das Objekt zum Zeitpunkt der Variablendeklaration noch nicht. Wieder falsch gedacht. Warum es bei hex geht, kann ich nicht erklären. In JavaScript ist es so, dass das Schlüsselwort var grundsätzlich eine Variable zu einer lokalen Variable macht. Ohne var ist es eine globale Variable.

Also einfach nur das Schlüsselwort weglassen, und schon geht es. Mein Bauchgefühl (ich weiß, darauf sollte ich mich zumindest beim programmieren nicht verlassen) sagt mir aber, dass die folgen, auch funktionierende Variante noch etwas eleganter wäre:


window.onload  = function () {
hex=0; //start color value
loading = document.getElementById("transmissionstatus");
}

Ich für meinen Teil kann jetzt auf jeden Fall beruhigt schlafen. Und morgen ist ja Samstag.

3 Replies to “JavaScript zur Nacht”

  1. Öhm. Stimmt nicht so ganz. Wenn eine Variable innerhalb einer Funktion definiert wird, dann ist sie auch nur innerhalb der Funktion verfügbar. Man spricht dabei von lokalen Variablen.
    Wird die Variable ausserhalb einer Funktion definiert, dann steht sie auch innerhalb von allen anderen Funktionen zur Verfügung. In diesen Fall spricht man von einer globalen Variable.
    Will man innerhalb einer Funktion eine globale Variable definieren, z.B. um sie in anderen Funktionen weiter zu verarbeiten, dann lässt man das Schlüsselwort var weg und macht die Variable damit global.

    Deine Vermutung das dass Object zum Zeitpunkt der Variablendefinition noch gar keinen Wert hat ist richtig. Das JavaScript wird abgearbeitet bevor überhaupt etwas auf dem Bildschirm zu sehen ist. Also auch bevor der Browser das Objekt mit der ID erzeugt hat.

Kommentar verfassen

über Thomas Boley

Geboren wurde ich im Jahre des Herren 1971 in Wesel am Niederrhein – die Kommentare an dieser Stelle bezüglich des Bürgermeisters bitte verkneifen! Mein Verhältnis zu dieser Stadt würde wohl den Umfang dieser Seite sprengen. Nur soviel sei gesagt: Es ist durchaus durchwachsen, worin es sich aber nicht von meinem Verhältnis zu Bielefeld unterscheidet. Nach dem üblichen Werdegang (Kindergarten, Schule, Abitur, Zivildienst) und den üblichen jugendlichen Irrungen und Wirrungen verschlug es mich zum Studium nach Bielefeld verschlagen. 18 Jahre später ging es dann zurück an den Rhein, in die Domstadt Köln. mehr erfahren