Argumente bei document.onload
Dieter Raber
- javascript
Hallo,
Ich habe ein Webseite mit den zwei Elementen namens 'foo' und 'bar'. Im Kopf ist eine Javascript-Datei mit der Funktion 'mach_was(arg1)' eingebunden. mach_was() kann nicht onload aufgerufen werden, weil 'foo' und 'bar' dann noch nicht existieren. Bleibt also die Lösung <script...>document.onload = mach_was</script> irgendwann, nachdem die beiden existieren. Das Problem ist, dass ich dann an mach_was() keine Argumente mehr überreichen kann.
Gibt es dafür eine Lösung?
BTW, kann man document.onload eigentlich mehrfach aufrufen?
Danke erstmal.
Dieter
Moin!
Ich habe ein Webseite mit den zwei Elementen namens 'foo' und 'bar'. Im Kopf ist eine Javascript-Datei mit der Funktion 'mach_was(arg1)' eingebunden. mach_was() kann nicht onload aufgerufen werden, weil 'foo' und 'bar' dann noch nicht existieren.
Wann, wenn nicht nach Fertigladen der Seite, existieren deine Elemente denn?
Der Javascript-Code in <body onload="..."> wird doch erst zum Zeitpunkt des onload interpretiert ausgeführt. Also sollten auch Parameter und Elemente kein Problem sein und existieren.
Bleibt also die Lösung <script...>document.onload = mach_was</script> irgendwann, nachdem die beiden existieren. Das Problem ist, dass ich dann an mach_was() keine Argumente mehr überreichen kann.
Diese Lösung ist der mit dem onload-Attribut gleichwertig.
BTW, kann man document.onload eigentlich mehrfach aufrufen?
Das kann man nicht "aufrufen", weil es eine Objekt-Eigenschaft, also sozusagen eine Variable ist. Rufst du Variablen auf? Ich nicht. :)
- Sven Rautenberg
Moin,
BTW, kann man document.onload eigentlich mehrfach aufrufen?
Das kann man nicht "aufrufen", weil es eine Objekt-Eigenschaft, also sozusagen eine Variable ist. Rufst du Variablen auf? Ich nicht. :)
Hmm, ich schon (kind of):
foo = window.alert; foo("hallo");
Was meine Glaskugel aber sagt was der OP sucht ist etwas in der Art von
document.onload = function() {mach_was(foo); mach_was_anderes(bar);};
Hi Sven,
Wann, wenn nicht nach Fertigladen der Seite, existieren deine Elemente denn?
Ich hab mich da etwas unglücklich ausgedrückt. Wenn im Script (in <head>) steht
var foo = document.getElementById('bar');
meldet Mozilla pflichtgemäss, dass er ein Element namens 'bar' nicht kennen würde, weil es halt noch nicht da ist.
Diese Lösung ist der mit dem onload-Attribut gleichwertig.
ausser, dass keine Argumente akzeptiert werden ;-(
Das kann man nicht "aufrufen", weil es eine Objekt-Eigenschaft, also sozusagen eine Variable ist. Rufst du Variablen auf? Ich nicht. :)
Jo, ständig: "sitz still, foo" oder "bar, hör sofort auf undefined zu sein". Alles eine Frage der richtigen Kinderstube ;-)
Dieter
Hallo,
var foo = document.getElementById('bar');
Gemeint ist global, nicht innerhalb einer Funktion
Dieter
Moin!
Ich hab mich da etwas unglücklich ausgedrückt. Wenn im Script (in <head>) steht
var foo = document.getElementById('bar');
meldet Mozilla pflichtgemäss, dass er ein Element namens 'bar' nicht kennen würde, weil es halt noch nicht da ist.
var foo;
function...{
foo = document.getElementById('bar');
}
<body onload="function...">
- Sven Rautenberg
Aha, das klingt gut, werd ich gleich mal testen.
Dankeschoen!
Dieter
Hallo,
BTW, kann man document.onload eigentlich mehrfach aufrufen?
indirekt ja, du kannst onload definieren:
window.onload=function(){ ... }
und anschliessend verwenden, z.B. so:
window.onResize = window.onload;
und, vgl. auch http://www.lipfert-malik.de/webdesign/tutorial/css.html#nurEinOnload,
onload kann auch abgefragt und verändert oder ergänzt werden.
Grüsse
Cyx23