Alex: getElementsByName

Hallo,

ich bin gerade dabei einige Formulare zu basteln und dabei auf eine Sache gestoßen, die für mich keinen Sinn ergibt.

Ich habe für die Formelemente immer das Name Attribut genutzt um ihnen einen Bezeichner zu geben
in etwa so:

<select class="m2n" name="valueSelected" multiple="multiple" size="5">
<option>.....
</select>

wenn ich nun einige Sachen per Javascript machen will bietet sich meiner Meinung nach folgende funktion an.

setSelected(document.getElementById("valueSelected"));

in setSelected lese ich die gesetzten werde aus und packe sie in ein hidden element...das nur am Rande

Jetzt das Problem. Wie kann dieser Code funktionnieren ??
Mein Select Element hat keine ID bekommen, sondern nur Name...
Das würde darauf hindeuten, dass dabei eine gewisse Hierarchie existiert und da unter ID nichts gefunden wird, dann das Name Attribut genutzt wird. Könnte das hinkommen ? Ich meine da mal irgendwas gehört/gelesen zu haben in Verbindung mit dem HTML Standard.

So oder so es existiert ja noch die getElementsByName Funktion. Mein eigentliches Problem ist: Warum funktioniert mein Stückchen Code dort oben nicht mit der ByName Funktion ??

Kann mir das jemand erklären? Das hält mich jetzt schon ziemlich lange auf.

Danke,
Alex

  1. Yerf!

    So oder so es existiert ja noch die getElementsByName Funktion. Mein eigentliches Problem ist: Warum funktioniert mein Stückchen Code dort oben nicht mit der ByName Funktion ??

    Kann mir das jemand erklären? Das hält mich jetzt schon ziemlich lange auf.

    getElement*s*ByName liefert ein Array der Elemente zurück, da es ja mehrere Elemente mit dem gleichen Namen geben darf. Wenn es nur ein Element gibt kann man darauf mit dem Index [0] zugreifen.

    Gruß,

    Harlequin

    1. Yerf!

      So oder so es existiert ja noch die getElementsByName Funktion. Mein eigentliches Problem ist: Warum funktioniert mein Stückchen Code dort oben nicht mit der ByName Funktion ??

      Kann mir das jemand erklären? Das hält mich jetzt schon ziemlich lange auf.

      getElement*s*ByName liefert ein Array der Elemente zurück, da es ja mehrere Elemente mit dem gleichen Namen geben darf. Wenn es nur ein Element gibt kann man darauf mit dem Index [0] zugreifen.

      die Idee hatte ich auch schon. Das s dort sagts ja auch fast. aber der Versuch dort mittels Angabe eines Index rannzukommen schlug fehl.
      Das kann aber auch daran gelegen haben, dass ich zwischen dem ganzen php zeugs die eine oder andere quotation falsch hatte - geht ziemlich schnell wie ich feststellen musste.

      Gruß,

      Harlequin

      Gruß,
      Alex

      1. Mahlzeit,

        die Idee hatte ich auch schon. Das s dort sagts ja auch fast. aber der Versuch dort mittels Angabe eines Index rannzukommen schlug fehl.

        setSelected(document.getElementsByName("valueSelected")[0]);

        Das kann aber auch daran gelegen haben, dass ich zwischen dem ganzen php zeugs die eine oder andere quotation falsch hatte - geht ziemlich schnell wie ich feststellen musste.

        Vorschlag: EVA-Prinzip - keine Vermischung von Programmcode und Ausgabe.

        MfG,
        EKKi

        1. Mahlzeit,

          die Idee hatte ich auch schon. Das s dort sagts ja auch fast. aber der Versuch dort mittels Angabe eines Index rannzukommen schlug fehl.

          setSelected(document.getElementsByName("valueSelected")[0]);

          Super Idee - leider hat das nicht geklappt, aber es hat mich auf den Richtigen Weg gebracht.
          setSelected((document.getElementsByName("valueSelected"))[0]);

          Das kann aber auch daran gelegen haben, dass ich zwischen dem ganzen php zeugs die eine oder andere quotation falsch hatte - geht ziemlich schnell wie ich feststellen musste.

          Vorschlag: EVA-Prinzip - keine Vermischung von Programmcode und Ausgabe.

          Gruß,
          Alex

  2. <select class="m2n" name="valueSelected" multiple="multiple" size="5">
    <option>.....
    </select>

    wenn ich nun einige Sachen per Javascript machen will bietet sich meiner Meinung nach folgende funktion an.

    setSelected(document.getElementById("valueSelected"));

    Ist nicht nötig, wieso nutzt du nicht document.forms[...].elements[...]?

    in setSelected lese ich die gesetzten werde aus und packe sie in ein hidden element...das nur am Rande

    Das klingt auch unnötig, die Werte werden doch so oder so übertragen.

    Struppi.

    1. <select class="m2n" name="valueSelected" multiple="multiple" size="5">
      <option>.....
      </select>

      wenn ich nun einige Sachen per Javascript machen will bietet sich meiner Meinung nach folgende funktion an.

      setSelected(document.getElementById("valueSelected"));

      Ist nicht nötig, wieso nutzt du nicht document.forms[...].elements[...]?

      in setSelected lese ich die gesetzten werde aus und packe sie in ein hidden element...das nur am Rande

      Das klingt auch unnötig, die Werte werden doch so oder so übertragen.

      naja kurzzeitig erschien mir das als mögliche lösung, da ich die werte aus der selectbox in einem popup brauche.
      deswegen auch das getElementsByName..ich arbeite mit php und brauche das alles möglichst generisch

      Struppi.

      1. Das klingt auch unnötig, die Werte werden doch so oder so übertragen.
        naja kurzzeitig erschien mir das als mögliche lösung, da ich die werte aus der selectbox in einem popup brauche.

        Das verstehe ich nicht.

        deswegen auch das getElementsByName..ich arbeite mit php und brauche das alles möglichst generisch

        Das auch nicht, du kannst nicht eine bewährte Methode verwenden, weil du ein Popup und PHP verwendest?
        Das ist doch Unsinn.

        Struppi.

        1. Das klingt auch unnötig, die Werte werden doch so oder so übertragen.
          naja kurzzeitig erschien mir das als mögliche lösung, da ich die werte aus der selectbox in einem popup brauche.

          Das verstehe ich nicht.

          deswegen auch das getElementsByName..ich arbeite mit php und brauche das alles möglichst generisch

          Das auch nicht, du kannst nicht eine bewährte Methode verwenden, weil du ein Popup und PHP verwendest?
          Das ist doch Unsinn.

          Es geht bei mir darum aus einem Formelement den Wert zu bekommen und diesen dann in einem Popup zu verwenden.
          Die Formelemente generiere ich allerdings, um sie mehrmals zu verwenden. Deswegen ist ein Direkter Zugriff mit document.Formname. usw. nicht drin. aus diesem Grund nutze ich die getElementsById Funktion, weil ich dort schon vorher (zum Zeitpunkt an dem die Auslesefunktion generiert wird) den benötigten String mit übergeben kann
          Hoffe das ist einigermaßen verständlich

          Struppi.

          1. Es geht bei mir darum aus einem Formelement den Wert zu bekommen und diesen dann in einem Popup zu verwenden.

            Das habe ich verstanden.

            Die Formelemente generiere ich allerdings, um sie mehrmals zu verwenden. Deswegen ist ein Direkter Zugriff mit document.Formname. usw. nicht drin.

            und das nicht, was heißt generieren?
            Evtl. hast du ein Problem damit, dass der IE mit createElement erzeugt Formularelemente nicht in forms.elements einbindet. Das ist ein bekanntes Problem für das es auch Lösungen gibt.

            aus diesem Grund nutze ich die getElementsById Funktion, weil ich dort schon vorher (zum Zeitpunkt an dem die Auslesefunktion generiert wird) den benötigten String mit übergeben kann

            Das verstehe ich wiederrum nicht. Einmal ist hier die ganze Zeit die Rede von getElementsByName() und dann kannst du beim "generieren" (falls du createElement meinst) direkt auf das erzeugte Element zugreifen ganz ohne getElement-Funktion, d.h. du kannst den benötigen String direkt mit [Element].value = string pbergeben,

            Hoffe das ist einigermaßen verständlich

            nicht wirklich.

            Struppi.

  3. Hallo Alex,

    Jetzt das Problem. Wie kann dieser Code funktionnieren ??
    Mein Select Element hat keine ID bekommen, sondern nur Name...

    Wahrscheinlich benutzt du den Internet-Explorer? Andere Browser dürften so einen Spaß nicht mitmachen, jedenfalls nicht solange die nicht in irgendnem haarsträubenden Kompatibilitätsmodus sind.

    Jonathan

    1. Hi,

      Jetzt das Problem. Wie kann dieser Code funktionnieren ??
      Mein Select Element hat keine ID bekommen, sondern nur Name...

      Wahrscheinlich benutzt du den Internet-Explorer? Andere Browser dürften so einen Spaß nicht mitmachen, jedenfalls nicht solange die nicht in irgendnem haarsträubenden Kompatibilitätsmodus sind.

      Nicht ganz so schlimm: Ich benutzt Opera - aber der scheint das ähnlich zu machen. Firefox ist aber wie es mir jetzt erscheint die beste Wahl, da er am strengsten reagiert

      Alex