Marcel: Variablenverwendung in Funktionen

Hallo zusammen,

ich habe eine Funktion, die mehrere <input type="text" /> Felder mit Hilfe von document.foo.bar.value="HierEinBeispielWert"; automatisch ausfüllen soll. bar ist hierbei ein Name, der aus 2 Teilen besteht. Da es weit über 50 dieser Felder sind, möchte ich nicht jedes Feld einzeln in den Code schreiben, da dies den Code unnötg aufblähen würde. Daher gehe ich wie folgt vor:

function Beispielwerte() {
  var BspWerte=new Array(1,2,3,4,5);
  var InpFeldNameTeil1=new Array("Name","Vorname","Jahrgang")
  var InpFeldNameTeil2=new Array("GP1","GP2","GP3");
  for (var i=1;i<BspWerte.length;i++) {
    for (var j=0;j<InpFeldNameTeil1.length;j++) {
      for (var k=0;k<InpFeldNameTeil2.length;k++) {
        ITEM=InpFeldNameTeil1[j]+InpFeldNameTeil2[k];
        document.foo.ITEM.value=BspWerte[i];
      }
    }
  }
  return;
}

Leider bekomme ich hier die Fehlermeldung, das document.foo.ITEM kein Objekt ist.

Meine Frage hierzu: Wie stell ich es an, dass ITEM nicht als ITEM sondern als dessen Inhalt, also die Kombination aus ..Teil1 und ..Teil2 angesehen wird?

  1. Hallo Marcel.

    document.foo.ITEM.value=BspWerte[i];

    Meine Frage hierzu: Wie stell ich es an, dass ITEM nicht als ITEM sondern als dessen Inhalt, also die Kombination aus ..Teil1 und ..Teil2 angesehen wird?

    Zum Beispiel so:

    document.foo[ITEM].value=BspWerte[i];

    Christian Kruses Artikel „Objekt-Handling in JavaScript“ geht hierbei etwas mehr ins Detail.

    Einen schönen Samstag noch.

    Gruß, Ashura

    --
    sh:( fo:} ch:? rl:( br: n4:~ ie:{ mo:| va:) de:> zu:} fl:( ss:) ls:[ js:|
    „It is required that HTML be a common language between all platforms. This implies no device-specific markup, or anything which requires control over fonts or colors, for example. This is in keeping with the SGML ideal.“
    [HTML Design Constraints: Logical Markup]
  2. Hallo Marcel,

    ITEM=InpFeldNameTeil1[j]+InpFeldNameTeil2[k];
            document.foo.ITEM.value=BspWerte[i];
    Leider bekomme ich hier die Fehlermeldung, das document.foo.ITEM kein Objekt ist.

    das geht so auch nicht. Hier wird 'ITEM' wörtlich als Objektname verstanden. In so einem Fall kannst du aber die alternative Schreibweise verwenden:

    document.foo[ITEM].value=BspWerte[i];

    Dann wird ITEM als Variable ausgewertet und dessen Wert als Name des Objekts oder der Eigenschaft genommen.

    Ciao,
     Martin

    --
    Die letzten Worte der Challenger-Crew:
    Lasst doch mal die Frau ans Steuer!
    1. Wow, gleich zwei Antworten so fix. Vielen Dank euch Beiden.

      Schönen Tag wünsch ich. Meiner ist und nun ein bischen angenehmer geworden, da ein Problem weniger. :-)