Form-Element Radio ansprechen
Michael Schütz
- javascript
Hallo
Ich habe ein JS Array in welchem dynamsich die Namen der Formularleemente gespeichert sind:
z.B. var array = new Array('alter', 'geschlecht', 'bildung');
Über eine Schleife überprüfe ich, von welchem Typ das Element ist:
for (i=0; i<array.length; i++)
if (document.getElementById(array[i]))
if (document.getElementById(array[i]).type == "text"
if (!document.getElementById(array[i]).value)
etc
Wie schaffe ich nun, alle Fadio-Elemente des Namens array[i] anzusprechen?
if (document.getElementById(array[i]))
if (document.getElementById(array[i]).type == "radio"
if (!document.getElementById(array[i]).value)
for (j=0; j<25; j++)
if (document.Fragebogen.elements[array[i]+"["+j+"]"])
In dieser letzten Zeile ist der Fehler! Das Element findet er nicht
Wie kann ich auf ALLE RadioButtons mit dem Namen array[i] zugreifen, wenn mir der Name nur als Array vorliegt?
Besten Dank, ich komm hier nicht weiter und bekomme es langsam an die Nerven
Michael
hi,
Wie schaffe ich nun, alle Fadio-Elemente des Namens array[i] anzusprechen?
document.Formularname.elements[array[i]][x] ...?
if (document.getElementById(array[i]))
Auf Grund deiner Beschreibung gehe ich davon aus, dass du mehrere Radiobuttons mit dem _Namen_ des in array[i] stehenden Strings hast - also was willst du hier mit getElementById? Das kann nur genau ein Element liefern, weil es auch nur genau ein Element mit dieser Id geben darf.
gruß,
wahsaga
Hallo wahsaga
Dein Einwand stimmt, ich habe auch schon document.formularname.elements[array[i][x]] probiert, doch kein Browser liefert mir da ein Ergebnis
Ich bekomme keine JS-Fehlermeldung, doch das Element wird offensichtlich nicht gefunden
if (document.getElementById(array[i]).type == "radio") {
alert(array[i]); // erfolgt
for (j=0; j<25; j++) {
if (document.Fragebogen.elements[array[i][j]]) {
alert(j); // erfolgt nicht
}
}
}
<input type=radio name="button" id="button" value="1"> Button 1<br>
<input type=radio name="button" id="button" value="2"> Button 2<br>
<input type=radio name="button" id="button" value="3"> Button 3<br>
hi,
Wie schaffe ich nun, alle Fadio-Elemente des Namens array[i] anzusprechen?
document.Formularname.elements[array[i]][x] ...?
if (document.getElementById(array[i]))
Auf Grund deiner Beschreibung gehe ich davon aus, dass du mehrere Radiobuttons mit dem _Namen_ des in array[i] stehenden Strings hast - also was willst du hier mit getElementById? Das kann nur genau ein Element liefern, weil es auch nur genau ein Element mit dieser Id geben darf.
gruß,
wahsaga
Hallo,
zunächst einmal ist Dein HTML-Markup nicht valide, wenn Du eine ID mehrfach vergibst, in Deinem Fall also an die Checkbox-Felder.
Damit eine ID ihrem Zweck als Identifizierer gerecht werden kann, muß sie eindeutig sein.
Das name-Attribut hingegen darfst Du mehrfach identisch belegen.
Also etwa so:
<input type="checkbox" name="auswahl" id="choice_1" value="foo" />
<input type="checkbox" name="auswahl" id="choice_2" value="bar" />
<input type="checkbox" name="auswahl" id="choice_3" value="baz" />
Erst dann hast Du valides HTML und kannst überlegen, wie Du nun auf Deine Formularfelder zugreifst.
Vielleicht mußt Du Deinen Ansatz umstellen und Dich an die name-Attribute halten (-> http://de.selfhtml.org/javascript/objekte/document.htm#get_elements_by_name).
Ciao,
Andreas
Hallo Jörg,
dass das mit drei mal gleicher ID nicht korrekt ist, weiss ich, doch bekomme ich innerhalb meines Systems sonst mit Netscape Probleme, wenn NAME und ID nicht übereinstimmen
Und da if (document.getElementsByName(array[i]).type == "radio") bei NS und IE nicht funktioniert (auch wenn ID unterschiedlich) entschloss ich mich letztlich beides gleich zu setzen
So funktionierts nun
danke, hatte den Wald vor lauter Bäumen nicht meh gesehen
} else if (document.getElementById(array[i]).type == "radio") {
for (j=0; j<25; j++) {
if (document.getElementsByName(array[i])[j]) {
alert(document.getElementsByName(array[i])[j].checked);
}
}
}
Hallo,
zunächst einmal ist Dein HTML-Markup nicht valide, wenn Du eine ID mehrfach vergibst, in Deinem Fall also an die Checkbox-Felder.
Damit eine ID ihrem Zweck als Identifizierer gerecht werden kann, muß sie eindeutig sein.
Das name-Attribut hingegen darfst Du mehrfach identisch belegen.
Also etwa so:
<input type="checkbox" name="auswahl" id="choice_1" value="foo" />
<input type="checkbox" name="auswahl" id="choice_2" value="bar" />
<input type="checkbox" name="auswahl" id="choice_3" value="baz" />Erst dann hast Du valides HTML und kannst überlegen, wie Du nun auf Deine Formularfelder zugreifst.
Vielleicht mußt Du Deinen Ansatz umstellen und Dich an die name-Attribute halten (-> http://de.selfhtml.org/javascript/objekte/document.htm#get_elements_by_name).Ciao,
Andreas
hi,
Dein Einwand stimmt, ich habe auch schon document.formularname.elements[array[i][x]] probiert, doch kein Browser liefert mir da ein Ergebnis
Das ist ja auch nicht die Schreibweise, die ich dir vorgeschlagen hatte.
gruß,
wahsaga