Michael Kleinhans: variable variablen wie in PHP?

Hi gents,

kennt Javascript eignetlich acuh variable Variablen?
oder wie löse ich z.B. einen Aufruf a la

function load_in_frame(das_element) {
  das_element = "navigationframe";
  parent.{das_element}.location.href="test.html";
}

[...]

javascript:load_in_frame('navigation');

Mir ist klar, daß ich dieses konkrete Problem - URL in einem Frame laden - auch ganz anders lösen kann; mir geht es um die Lösung des Problems: Objekt ansprechen, welches erst durch den Wert einer Variablen bestimmt wird.

Z.B. könnte man ein Dokument nach allen h1-Tags tags parsen wollen und diesen dann einen bestimmten Wert zuweisen - dabei weiß ich beim Aufruf der Funktion ja noch nicht, welches Element das ist - und wenn es in einem anderen Fenster ist und die Datei unbekannt, kann ich es auch nicht irgendwie mit this. erreichen.

Hm? Seid ihr schlau? ;o)

  1. Hi gents,

    kennt Javascript eignetlich acuh variable Variablen?
    oder wie löse ich z.B. einen Aufruf a la

    function load_in_frame(das_element) {
      das_element = "navigationframe";
      parent.{das_element}.location.href="test.html";
    }

    [...]

    javascript:load_in_frame('navigation');

    So richtig variable Variablen gibts in Javascript nicht.
    Ich denk du kannst das Problem aber lösen, wenn du eval verwendest.

    http://www.teamone.de/selfhtml/tq.htm

    function load_in_frame(das_element) {
      eval("parent."+das_element+".location.href='test.html';");
    }
    oder
    function load_in_frame(das_element,seite) {
      eval("parent."+das_element+".location.href='"+seite"';");
    }

    Viele Grüsse,
    Simon

  2. Hallo Simon,

    kennt Javascript eignetlich acuh variable Variablen?
    oder wie löse ich z.B. einen Aufruf a la

    function load_in_frame(das_element) {
      das_element = "navigationframe";
      parent.{das_element}.location.href="test.html";
    }

    Ja das geht hervorragend auf vielfältige Weise. Hier zwei Beispiele:
    function SETSTATUS(x)
     {
      var arr = showModalDialog( "status.htm",
                                 "",
                                 "font-family:Arial; font-size:10; dialogWidth:30em; dialogHeight:46em" );

    if (arr != null)
      {
        document.all[x.name].value = arr;
      }

    }
    Der vorstehenden Funktion wird der Name einer Variablen übergeben, deren Inhalt danach in Abhängigkeit vom Ergebnis eines Dialoges verändert wird.
    Ist der Name der Variablen aber auch nicht bekannt, weil irgendwo anders gespeichert, kann es so gehen:
    function writeEintrag()
    {
      var FEdaten = '';

    for (d=0;d< FEvar.length;d++)
          {
                FEdaten += FEvarName + "[" + FEvarName + ".length] = new " + FEname + "();";
                for (i=0;i < FEfelder.length;i++)
                   {
                    FEdaten += FEvarName + "[" + FEvarName + ".length-1]." + FEfelder[i].name + "='" + FEvar[d][FEfelder[i].name] + "';";
                   }
          }
    }
    Hier sind die Variablennamen in einem Array gespeichert, der über eine Schleife durchlaufen wird und es wird für einen anderen Array ein neuer Eintrag erzeugt. Wobei ebenfalls der Name des zweiten Arrays unbekannt und in einer Variablen gespeichert ist.
    (Es fehlt ein Teil Code, der über document.write den Inhalt von FEdaten ausführt. Das Prinzip sollte aber erkennbar sein. )
    Es ist alles eine Frage der Adressierung des unbekannten Namens. Die Beispiele gelten für den IE. Eine Anpassung an andere Browser solltest Du hin bekommen.
    Gruß
    Günter