Variablen
ralf
- javascript
Hallo,
ich hab folgenden Code:
var prod1=crossDOM(1,'produkt');
var sign1=crossDOM(1,'signet');
var txt1=crossDOM(1,'text');
function init() {
prod1.top=20;
sign1.top=objHeight('produkt')+objTop('produkt');
txt1.top=objHeight('signet')+objTop('signet');
}
Wenn ich das Script aufrufe, kommt die Fehlermeldung, das prod1 null oder kein objekt ist. Schreibe ich es so:
function init() {
var prod1=crossDOM(1,'produkt');
var sign1=crossDOM(1,'signet');
var txt1=crossDOM(1,'text');
prod1.top=20;
sign1.top=objHeight('produkt')+objTop('produkt');
txt1.top=objHeight('signet')+objTop('signet');
}
dann gehts.
Da noch ein paar funktionen mehr kommen, will ich nicht immer die Objekte neu definieren.
Was mach ich falsch?
Danke und Gruß
Ralf
PS. Die Funktion crossDOM hat damit nix zu tun
Hallo,
probiers doch mal ohne var
http://selfhtml.teamone.de/javascript/sprache/variablen.htm#definieren
Odium
Hallo Odium,
probiers doch mal ohne var
Alles klar, innerhalb der Funktion werden globale Variablen ohne var definiert. Jetzt gehts auch.
Aber warum werden diese ausserhalb der Funktion nicht global angesehen?
Gruß
Ralf
Hallo,
Alles klar, innerhalb der Funktion werden globale Variablen ohne var definiert. Jetzt gehts auch.
Aber warum werden diese ausserhalb der Funktion nicht global angesehen?
Werden sie, glaub mir ;-)).
Wann rufst Du init() auf?. Ich schätze mal onload? Die Zuweisungen außerhalb der Funktion werden sofort ausgeführt, also gegebenenfalls noch bevor die Seite geladen wurde. Dann kann natürlich noch nicht auf Objekte der Seite zugegriffen werden. Es können also auch Variablen noch keine Eigenschaftswerte dieser Objekte zugewiesen werden.
viele Grüße
Axel
Hi,
PS. Die Funktion crossDOM hat damit nix zu tun
sicher? Versuche an der Stelle, wo Du die Variablen initialisierst, mal ein alert(crossDOM) bzw. alert(crossDOM(1,'produkt')).
Cheatah
Hi,
sicher? Versuche an der Stelle, wo Du die Variablen initialisierst, mal ein alert(crossDOM) bzw. alert(crossDOM(1,'produkt')).
sicher bin ich sicher :)
Die Funktion crossDOM macht nichts anderes als Objekte für unterschiedliche Browser "lauffähig" zu machen. Wenn ich die deklarierung innerhalb der Funktion mach, gehts ja auch
gruß
Ralf
Hi,
sicher? Versuche an der Stelle, wo Du die Variablen initialisierst, mal ein alert(crossDOM) bzw. alert(crossDOM(1,'produkt')).
sicher bin ich sicher :)
ist Dein Browser auch sicher? ;-)
Die Funktion crossDOM macht nichts anderes
Sofern sie da schon bekannt ist.
Cheatah
Hi,
ist Dein Browser auch sicher? ;-)
Die Funktion crossDOM macht nichts anderes
Sofern sie da schon bekannt ist.
Glaub mir es ist. Ich kann Dir den Code leider nicht posten, also vertrau mir :)
gruß
Ralf
Hi,
Glaub mir es ist. Ich kann Dir den Code leider nicht posten, also vertrau mir :)
den Code will ich gar nicht wissen, sondern nur, welches Ergebnis der alert() brachte :-) Ich kann Deinen Äußerungen halt nicht entnehmen, ob Du "nur glaubst", oder ob Du schon geprüft hast. Oftmals sind es tatsächlich solche Dinge, bei denen man sich hinterher an die Stirn klatscht, dass man nicht gleich dran gedacht hat.
Cheatah
Hallo,
»»Wenn ich das Script aufrufe, kommt die Fehlermeldung, das prod1 null oder kein objekt ist.
dann wird wohl deine Funktion crossDOM zum Zeitpunkt des Aufrufs null zurückliefern. Falls der Script-Code im Header-Bereich steht, dann kann sie (crossDOM) wohl noch nicht aufs DOM zurgreifen bzw. übers DOM auf die entspr. Elemente, da diese noch nicht zur Verfügung stehen.
Solange uns also nicht bekannt ist wo dein Script-Code steht und wann die einzelnen Funktionen aufgerufen werden, läßt sich zu dem von dir beschriebenen Problem keine schlüssige Aussage treffen.
Ich vermute du rufst die init-Funktion dann auf, wenn die Seite vollständig geladen ist. Zu diesem Zeitpunkt funktioniert crossDOM wahrscheinlich korrekt, wo hingegen bei deiner ursprünglichen Form der Implementierung, die entspr. Elemente noch nicht ermittelt werden können, da die Initialisierung vor der Bereitstellung erfolgt und somit fehlschlagen muss.
...
//Deklaration
var prod1;
var sign1;
var txt1;
//Initialisierung
function init ()
{
prod1 = crossDOM(1,'produkt');
sign1 = crossDOM(1,'signet');
txt1 = crossDOM(1,'text');
prod1.top = 20;
sign1.top = objHeight('produkt') + objTop('produkt');
txt1.top = objHeight('signet') + objTop('signet');
}
...
<body onload="init();">
...
bernd