Lars Reinhard: Eckige Klammern in Objecktnamen?

Hallo, ich habe ein folgendes Problem:

Ein Formular enthält eine "multiple select"

--> <select name="Auswahl[]" size="8" multiple>

Damit ich es mit PHP auswerten kann, hat der Name diese Selectfeldes eckige Klammern am ende.

Nun will ich per Javascript auf das Element zugreifen.
Leider weiss ich nicht, wie nun der Objektname lautet, da dies hier offensichtlich nicht funktioniert:
--> document.Testform.Auswahl[].options[1].selected = true;

Hat jemand einen Rat für mich?

Danke
Lars.

  1. Tach,

    --> <select name="Auswahl[]" size="8" multiple>

    Damit ich es mit PHP auswerten kann, hat der Name diese Selectfeldes eckige Klammern am ende.

    eckige Klammern sind im name-Attribut nicht erlaubt: "ID and NAME tokens must begin with a letter ([A-Za-z]) and may be followed by any number of letters, digits ([0-9]), hyphens ("-"), underscores ("_"), colons (":"), and periods (".")." Quelle: http://www.w3.org/TR/html401/types.html#type-cdata

    mfg
    Woodfighter

    1. eckige Klammern sind im name-Attribut nicht erlaubt: "ID and NAME tokens must begin with a letter ([A-Za-z]) and may be followed by any number of letters, digits ([0-9]), hyphens ("-"), underscores ("_"), colons (":"), and periods (".")." Quelle: http://www.w3.org/TR/html401/types.html#type-cdata

      Das war mir bekannt, trotzdem danke.
      Jetzt wo ich richtig Wach bin, ist das problem auch gelöst: natürlich mit ner "id" und getElementbyID...
      ...
      Sorry for that!

      CLOSED

    2. Hallo,

      --> <select name="Auswahl[]" size="8" multiple>
      eckige Klammern sind im name-Attribut nicht erlaubt: "ID and NAME tokens must begin with a letter

      Das name-Attribut beim select-Element ist aber weder vom Typ ID noch vom Typ NAME, sondern vom Typ CDATA:

      Quelle: http://www.w3.org/TR/html401/types.html#type-cdata

      Mathias

      1. Tach,

        Das name-Attribut beim select-Element ist aber weder vom Typ ID noch vom Typ NAME, sondern vom Typ CDATA:

        hast natürlich (wie üblich) Recht. Ich stolperte über die Möglichkeit weiterer Einschränkungen und der nächste Listenpunkt passte scheinbar dazu.

        mfg
        Woodfighter

  2. Hallo,

    --> <select name="Auswahl[]" size="8" multiple>
    Nun will ich per Javascript auf das Element zugreifen.
    Leider weiss ich nicht, wie nun der Objektname lautet, da dies hier offensichtlich nicht funktioniert:
    --> document.Testform.Auswahl[].options[1].selected = true;

    document.Formularname.Feldname ist eine Kurzschreibweise für document.forms.Formularname.elements.Feldname. In JavaScript können Unterobjekte über die Schreibweise objekt.unterobjekt sowie äquivalent über die Schreibweise objekt["unterobjekt"] angesprochen werden. Somit kann man mit Objektnamen arbeiten, die als String vorliegen und nicht den Regeln unterworfen sind, die sonst für Objektnamen gelten.

    document.forms.Formularname.elements.Feldname kann also auch als document.forms["Formularname"].elements["Feldname"] notiert werden, siehe http://de.selfhtml.org/javascript/objekte/elements.htm.

    Daher kannst du z.B.
      document.forms.Testform.elements["Auswahl[]"]
    schreiben.

    Mathias