Variablenübergabe & Objekte
Stefan Lapenat
- javascript
Hallo !
Ich scheitere gerade an folgender Problemstellung.
x) in einer externen Javascript-Datei habe ich Objekte mit entsprechenden Eigenschaften angelegt ( bspw. Meier.Vorname = "Klaus"; )
x) in einer weiteren Datei habe ich eine Übersicht der Personen, beim Klick auf eine Person öffne ich eine HTML-Datei ( person.htm?Meier )
x) Diese Variable hole ich aus der Url und habe Sie nun in einer Variable var1 innerhalb der dritten HTML-Datei person.htm
Wenn ich nun in der dritten Datei eingebe :
alert(Meier.Vorname); -> dann bekomme ich den Klaus
gebe ich jedoch ein
alert (var1.Vorname); -> dann bekomme ich ein undefined
Hat jemand einen heissen Tip wie ich dieses Problem anpacken muss ?
Danke für eure Hilfe !
Ciao
Stefan
Hallo !
Wenn ich nun in der dritten Datei eingebe :
alert(Meier.Vorname); -> dann bekomme ich den Klaus
gebe ich jedoch ein
alert (var1.Vorname); -> dann bekomme ich ein undefined
hm, mal sehen ob ich dich richtig verstehe.
in deiner dritten datei willst du z.B. auf die eigenschaft Vorname zugreifen und zwar von dem Namen den du per ? übergeben hast (?)
dann hast du dort auch das exteren javascript eingebunden und könntest
mit window[var1].Vorname darauf zugreifen.
(steht für window["Meier"].Vorname, da in var1 der Wert "Maier")
Wenn du var1.Vorname ansprichst würdest du ein Objekt mit dem Namen var1 ansprechen, das ist aber nicht dein Ziel, sondern den Inhalt der Variable var1 als Objektname zu nehmen. Alle Variablen und Objekte sind zunächstmal Eigenschaften des window-Objektes und über dieses kannst du dann auch gehen.
hoffe das hilft weiter
gruss
Thorsten
Hallo !
Wenn ich nun in der dritten Datei eingebe :
alert(Meier.Vorname); -> dann bekomme ich den Klaus
gebe ich jedoch ein
alert (var1.Vorname); -> dann bekomme ich ein undefined
hm, mal sehen ob ich dich richtig verstehe.
in deiner dritten datei willst du z.B. auf die eigenschaft Vorname zugreifen und zwar von dem Namen den du per ? übergeben hast (?)
dann hast du dort auch das exteren javascript eingebunden und könntest
mit window[var1].Vorname darauf zugreifen.
(steht für window["Meier"].Vorname, da in var1 der Wert "Maier")
Wenn du var1.Vorname ansprichst würdest du ein Objekt mit dem Namen var1 ansprechen, das ist aber nicht dein Ziel, sondern den Inhalt der Variable var1 als Objektname zu nehmen. Alle Variablen und Objekte sind zunächstmal Eigenschaften des window-Objektes und über dieses kannst du dann auch gehen.
aalso ...
irgendwie hat es schon ein "wenig" funktioniert ... der tip ist klasse
der befehl
alert(window[var1].Vorname); bringt tatsaechlich den Klaus
genauso wie die funktion ( was ich im forum fand )
eval("alert(" + var1 + ");");
das geht also einwandfrei ...
nun habe ich mir eine funktion geschrieben
die heisst print_pers und zeigt nun alle eigenschaften an ...
function print_pers(var1)
{
document.write("Vorname " + var1.Vorname);
}
mit
eval("print_pers("+var1+");");
kann ich die funktion einwandfrei ausloesen
gibts auch fuer diese [ ] schreibweise einen entsprechenden aufruf - ich komm irgendwie nicht drauf ...
merci !!
hi Stefan
mit
eval("print_pers("+var1+");");
kann ich die funktion einwandfrei ausloesen
gibts auch fuer diese [ ] schreibweise einen entsprechenden aufruf - ich komm irgendwie nicht drauf ...
ist das selbe wie print_pers(var1); wenn ich nix falsch verstehe brauchst du eval garnicht.
Das Problem dürfte dann in deiner Funktion selbst auftretten, da du eine einfache Variable übergibst und nicht das Objekt das du übergeben möchtest. Mit den folgen das du in der Funktion in der variable var1 _nur_ einen String mit dem Wert "Meier" hast. Die Eigenschaft Vorname gibt es für diesen String nicht.
print_pers(window[var1]);
solltest du probieren, damit übergibst du dann dein Objekt "Meier" und kannst dann die Eigenschaft Vorname in der Funktion ausgeben.
gruss
Thorsten