Variablen in nachgeladener Datei
Axel
- javascript
Hallo Leute,
ein kleines Javascript Problem:
Ich lade mit Javascript dynamisch eine externe Javascript-Datei nach. Dies mache ich folgendermaßen:
var s = document.createElement("script");
s.src = "extern.js";
s.type="text/javascript";
document.getElementsByTagName("head")[0].appendChild(s);
Den Code habe ich im Internet gefunden. Prinzipiell funktioniert das auch. Schreibe ich in "extern.js" z.B. einen alert, bekomme ich diesen angezeigt. Mein Problem ist nun, dass ich auf Variablen, die in extern.js deklariert sind (global) nicht zugreifen kann.
Gibt es da irgendwelche Einschränkungen?
Vielen Dank im Voraus
Schöne Grüße
Axel
Hi,
Mein Problem ist nun, dass ich auf Variablen, die in extern.js deklariert sind (global) nicht zugreifen kann.
wann?
Cheatah
Hallo,
wann?
oh ähm. Direkt im Anschluß. Also so:
var s = document.createElement("script");
s.src = "extern.js";
s.type="text/javascript";
document.getElementsByTagName("head")[0].appendChild(s);
alert(abc.length);
Das ergibt im alert eine 0. In der extern.js steht drin:
abc = new Array();
abc.push("a");
abc.push("b");
...
Auch schon mit var abc = new Array(); getestet, was aber ja eh kein Unterschied machen sollte.
Vielen Dank schonmal
Schöne Grüße
Axel
Hi,
wann?
oh ähm. Direkt im Anschluß.
aus welchem Grund vermutest Du, sollte das neu eingebundene Script dann bereits geladen und ausgeführt worden sein?
Auch schon mit var abc = new Array(); getestet, was aber ja eh kein Unterschied machen sollte.
Doch: Es deklariert die Variable explizit. Und wie wir alle wissen: Explicit is better than implicit.
Cheatah
Hallo,
aus welchem Grund vermutest Du, sollte das neu eingebundene Script dann bereits geladen und ausgeführt worden sein?
He, hatt ich mal so angenommen :-) Vielen Dank für den Hinweis. Dann werde ich jetzt am Ende der extern.js einen Funktionsaufruf einbauen.
Auch schon mit var abc = new Array(); getestet, was aber ja eh kein Unterschied machen sollte.
Doch: Es deklariert die Variable explizit. Und wie wir alle wissen: Explicit is better than implicit.
MMh. Ok. Dann mach ich das explizit. Aber interessieren würde mich daran noch WARUM das "better" ist. Aber das kann ich auch mal nachlesen.
Schöne Grüße
und nochmal vielen Dank
Axel
Hi,
Doch: Es deklariert die Variable explizit. Und wie wir alle wissen: Explicit is better than implicit.
MMh. Ok. Dann mach ich das explizit. Aber interessieren würde mich daran noch WARUM das "better" ist. Aber das kann ich auch mal nachlesen.
ich begrüße es, wenn Du hiernach recherchierst; aber als kurzer Hinweis: Explizite Schreibweise erfordert weitaus weniger Wissen über den Code, und es reduziert Missverständnisse sowie die Zeit, nach der Auflösung derselben zu suchen. Die Warnungen, die in einer (guten) JavaScript-Konsole auftauchen, stehen dort nicht ohne Grund.
Cheatah
Hi,
ich begrüße es, wenn Du hiernach recherchierst; aber als kurzer Hinweis: Explizite Schreibweise erfordert weitaus weniger Wissen über den Code, und es reduziert Missverständnisse sowie die Zeit, nach der Auflösung derselben zu suchen. Die Warnungen, die in einer (guten) JavaScript-Konsole auftauchen, stehen dort nicht ohne Grund.
ok, das Leuchtet ein. Fehler die durch den falschen Gültigkeitsbereich einer Variablen entstehen, können durchaus schwer zu finden sein. Meine JS-Konsole (FireFox 1.0.7) schweigt sich dazu allerdings aus.
Außerdem ist mir aufgefallen, das das Weglassen des Wortes "var" bei SelfHTML gar als, naja, "Feature" definiert ist. Nämlich, dass man so innerhalb einer Funktion globale Variablen erstellen kann. Allerdings wird natürlich auch nicht zu dieser Methode geraten.
Ich habe jedenfalls wieder was dazugelernt und vor Allem meinen Fehler behoben :-)
Nochmals vielen Dank für die Hilfe
schöne Grüße
Axel