WernerK: Textfeld mit Arrayname ansprechen?

Hallo
ein Value aus einem DropDown Menü soll in einem Textfeld angezeigt werden.

Mein Problem ist das Textfeld einen Namen hat wie
<input name="txt_addfileextention[doc]" type="text" />

function showFileextensions(var1){
//alert(var1);
document.forms[0].txt_addfileextention['doc'].value=var1
}

Meine Frage lautet nun wie man diesen Arraynamen des Textfeldes anspricht, denn mit "txt_addfileextention['doc']" geht es nicht?

Hintergrund: es gibt später mehrere Textfelder
txt_addfileextention[doc]
txt_addfileextention[xls]
txt_addfileextention[ppt]

die ich dann ansprechen möchte.

Gruss
Werner

  1. Mahlzeit WernerK,

    Meine Frage lautet nun wie man diesen Arraynamen des Textfeldes anspricht, denn mit "txt_addfileextention['doc']" geht es nicht?

    Indem Du Deine Formularelemente vernünftig ansprichst. Vernünftig wäre in diesem (und IMHO auch jedem anderen) Fall <http://de.selfhtml.org/javascript/objekte/elements.htm@title=Schema 4>.

    MfG,
    EKKi

    --
    sh:( fo:| ch:? rl:( br:> n4:~ ie:% mo:} va:) de:] zu:) fl:{ ss:) ls:& js:|
    1. Hallo Ekki,
      danke dir.

      Indem Du Deine Formularelemente vernünftig ansprichst. Vernünftig wäre in diesem (und IMHO auch jedem anderen) Fall <http://de.selfhtml.org/javascript/objekte/elements.htm@title=Schema 4>.

      Ich bin leider noch nicht so vertraut mit den unterschiedlichen Schreibweisen und Verhalten in JS. Ich hatte zwar gesucht aber nichts gefunden.

      So funktioniert es nun.
      Wenn das Textfeld so heisst:
      <input name="txt_addfileextention[doc]" type="text">
      kann ich es ansprechen mit:
      document.forms[0].elements["txt_addfileextention[doc]"].value=var1;

      Mir ist aber nicht so recht der Unterschied klar wenn das Textfeld einen "normalen" Namen hat wie;
      <input name="txt_addfileextention" type="text">
      dann geht es ja auch in dieser Schreibweise;

      document.forms[0].txt_addfileextention.value=var1

      Genauso ist mir nicht ganz klar warum bei einer Auswahl eines Values eines Select Menüs man nicht sowas schreiben kann:
      showFileextensions(this.selectedIndex.text

      sondern so:
      <select name="sel_fileextension_doc" onclick="showFileextensions(this.form.sel_fileextension_doc.options[document.forms[0].sel_fileextension_doc.selectedIndex].text)">

      Warum hier die Schreibweise mit "document" und "options"?

      Gruss
      Werner

      1. So funktioniert es nun.
        Wenn das Textfeld so heisst:
        <input name="txt_addfileextention[doc]" type="text">
        kann ich es ansprechen mit:
        document.forms[0].elements["txt_addfileextention[doc]"].value=var1;

        Mir ist aber nicht so recht der Unterschied klar wenn das Textfeld einen "normalen" Namen hat wie;
        <input name="txt_addfileextention" type="text">
        dann geht es ja auch in dieser Schreibweise;

        document.forms[0].txt_addfileextention.value=var1

        Das hat nur bedingt etwas mit dem Namen ztu tun. In JS siond beide schreibweisen äquivalent. D.h. objekt.eigenschaft ist das gleiche wie objekt['eigenschaft']

        Wenn die Eigenschaft aber Sonderzeichen enthält oder du mittels einer Variabel auf die Eigenschaft zugreifen möchtest, dann ist nur die 2. Schreibweise möglich.

        Genauso ist mir nicht ganz klar warum bei einer Auswahl eines Values eines Select Menüs man nicht sowas schreiben kann:
        showFileextensions(this.selectedIndex.text

        Weil selectedIndex der Index des ausgewählten Optionelement ist.

        sondern so:
        <select name="sel_fileextension_doc" onclick="showFileextensions(this.form.sel_fileextension_doc.options[document.forms[0].sel_fileextension_doc.selectedIndex].text)">

        Warum hier die Schreibweise mit "document" und "options"?

        document ist hier unnötig und options mittlerweile auch. Es ist zwar sauberer, die options so anzusprechen, aber es können eigentlich alle Browser auf this.value (wenn das Auswahlfeld nur eine Auswahl zuläßt)

        Struppi.

        1. Hi,

          <select name="sel_fileextension_doc" onclick="showFileextensions(this.form.sel_fileextension_doc.options[document.forms[0].sel_fileextension_doc.selectedIndex].text)">

          Warum hier die Schreibweise mit "document" und "options"?

          document ist hier unnötig und options mittlerweile auch. Es ist zwar sauberer, die options so anzusprechen, aber es können eigentlich alle Browser auf this.value (wenn das Auswahlfeld nur eine Auswahl zuläßt)

          Zumindest im IE < 7 macht auch das immer wieder mal Probleme; ich wuerde also sicherheitshalber immer den Weg ueber options gehen.

          document.forms und this.form sind hier aber in der Tat unnoetig (von der seltsamen Vermischung zweier Zugriffswege auf ein und das selbe Objekt mal abgesehen), da wir uns bereits auf dem Selectfeld befinden - also reicht this.options[this.selectedIndex] zum Zugriff auf die gewaehlte Option aus.

          MfG ChrisB

          --
          „This is the author's opinion, not necessarily that of Starbucks.“