getElementsByName
Alex
- javascript
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
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
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
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
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
<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.
<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.
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.
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.
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.
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
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