Thomas Mirke: Radio-Buttons in größerer Form / Variablenwert=undefined

Tach ooch aus Berlin,

habe zu obigem Thema zwei Fundstellen ausgemacht, die meinem Problem nahekommen:

http://www.teamone.de/selfhtml/tche.htm#a1
http://www.teamone.de/selfhtml/sfarchiv/1999_4/t09109.htm#a46092

Dennoch scheint es nicht ganz trivial zu sein, daher dieser Beitrag, vielleicht auch als Tipp.
Ich habe in einem Formular mehrere Felder, unter anderem auch Radiobuttons. Entsprechend haben diese Rbuttons den gleichen name bekommen. Hier ein Ausschnitt aus der Quelle:

<html>
<head></head>
<body>
<form name="HpWie">
  <table border="1" width="595">
    <tr>
      <td width="587" valign="middle">
        <table border="0" width="585">
          <tr>
            <td width="1" align="right"></td>
            <td width="43"><input type="radio" value="Frau" checked name="F0"><font face="Verdana" size="1">Frau</font></td>
            <td width="110"><font size="1" face="Verdana"><input type="radio" name="F0" value="Herr">Herr</font></td>
            <td width="78" align="right"></td>
            <td width="477"></td>
          </tr>
          <tr>
            <td width="1" align="right"><font size="1" face="Verdana">Vorname:</font></td>
            <td width="153" colspan="2"><input type="text" name="F1" size="20"></td>
            <td width="78" align="right"><font face="Verdana" size="1">Name:</font></td>
            <td width="477"><input type="text" name="F2" size="21"></td>
          </tr>
          <tr>
            <td width="55" align="right"><font size="1" face="Verdana">Strasse:</font></td>
            <td width="131" colspan="3"><input type="text" name="F3" size="32"></td>
            <td width="477"> </td>
          </tr>
</table>
</form>
</body>
</html>

Mal abgesehen davon, daß der NN gar nix anzeigt, gibt document.HpWie.length einen "falschen" Wert zurück, nämlich 5. Obwohl es ja streng genommen nur 4 mit name= definierte Unterobjekte gibt (bei 0 angefangen zu zählen sogar nur 3, in obigem Beispiel an F3 zu erkennen). Frage ich nun den Wert von document.HpWie.F0.value (die Radiobuttons) ab, so erhalte ich "undefined", was zunächst irgendwie merkwürdig erscheint.
Tatsächlich - und das habe ich so explizit auch nicht hier im Forum gefunden - wird aber intern ein Array für F0 angelegt.
document.HpWie.F0.length gibt nämlich im Beispiel 2 zurück.

Aus der Lektüre von http://www.teamone.de/selfhtml/tche.htm#a1
hatte ich vermutet, daß document.HpWie.F0.value automatisch den value desjenigen Radiobuttons erhielte, der mit checked aktiviert wird.
Dem ist aber nicht so.

Ich muß erst in einer Schleife durch den Array die Eigenschaft ...F0[i].status==true (für checked) abfragen und dann den Wert dazu ...F0[i].value.
Zumindest geht es so.

Danke für Eure Aufmerksamkeit und vielleicht erspart dies einigen ein paar Umwege.

  1. Hallo Thomas!

    Mal abgesehen davon, daß der NN gar nix anzeigt,

    Du hast einen HTML-Fehler: Zwei Tabellen werden geoeffnet, aber nur eine geschlossen. Wenn Du dies korrigierst, klappts auch im NN!

    hatte ich vermutet, daß document.HpWie.F0.value automatisch den value desjenigen Radiobuttons erhielte, der mit checked aktiviert wird.
    Dem ist aber nicht so.

    Doch, dem ist so! Aber "F0" gibt es bei Dir zweimal, das ist auch noetig, damit die Radiobuttons funzen, aber dann kannst Du sie halt nicht mit "document.forms.F0.value" abfragen, weils ja zwei sind, sondern eben mit "document.forms[i].value".

    Mfg
    Hartmut R.