Forum Doku Wiki Blog

Forumsarchiv 2005, November
Form-Element Radio ansprechen

archivierte Beiträge lesen

  1. (JAVASCRIPT) Form-Element Radio ansprechen von Michael Schütz, 18. 11. 2005, 14:14

Form-Element Radio ansprechen

Der folgende Beitrag wurde am 18. 11. 2005, 14:14 Uhr von Michael Schütz veröffentlicht.

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


Form-Element Radio ansprechen

Der folgende Beitrag wurde am 18. 11. 2005, 14:23 Uhr von wahsaga veröffentlicht.

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


--
/voodoo.css:
#GeorgeWBush { position:absolute; bottom:-6ft; }

Form-Element Radio ansprechen

Der folgende Beitrag wurde am 18. 11. 2005, 14:48 Uhr von Michael Schütz veröffentlicht.

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
>
>
  if 1

Form-Element Radio ansprechen

Der folgende Beitrag wurde am 18. 11. 2005, 15:05 Uhr von Andreas Dölling veröffentlicht.

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
--
"Das Corporate Design für das Internet sieht eine Reihe von Grafikelementen vor, die die Optik der Webseite visuell und funktionell beeinflussen." - (Zitat aus dem "Styleguide Corporate Design"  eines großen Konzerns...)

Form-Element Radio ansprechen

Der folgende Beitrag wurde am 18. 11. 2005, 15:52 Uhr von Michael Schütz veröffentlicht.

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
findet á

Form-Element Radio ansprechen

Der folgende Beitrag wurde am 18. 11. 2005, 20:26 Uhr von wahsaga veröffentlicht.

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


--
/voodoo.css:
#GeorgeWBush { position:absolute; bottom:-6ft; }

© 1998-2013 SELFHTMLImpressumSoftware: Classic Forum 3.4