Stefan Lapenat: Variablenübergabe & Objekte

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

  1. 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

    1. 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 !!

      1. 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