tommi trinkaus: Problem mit Radiobutton.length

Hallo,

ich habe ein Problem mit der length-Eigenschaft von radiobuttons:
Vor dem Versenden eines Formulars möchte ich prüfen, ob auch ein Eintrag gewählt wurde, dazu versuche ich mit
for (i=0; i<Obj.length; i++) {
...
...
}
alle Optionen des radiobuttons zu durchlaufen, aber length ist immer undefined!

Ich habe ein Beispiel aufgesetzt, das das Problem unabhängig vom Kontext zeigt:

---snip---
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <title>Radio Buttons</title>
    <meta http-equiv="content-type" content="text/html; charset=iso-8859-1">

<script language='javascript' type='text/javascript'>

function showInfo () {
        var Obj = document.getElementById('test');
        alert("Objektname: " + Obj.name + "\n" +
              "Objekttyp: " + Obj.type + "\n" +
              "Length: " + Obj.length);
      }

</script>

</head>
  <body>

<form name='frm_edit' id='frm_edit' method='post' action='beispiel.html'>

<input type='radio' name='test' id='test' value='1' /> Nord1<br />
      <input type='radio' name='test' id='test' value='2' /> Nord2<br />
      <input type='radio' name='test' id='test' value='3' /> Ost1<br />
      <input type='radio' name='test' id='test' value='4' /> Ost2<br />
      <input type='radio' name='test' id='test' value='5' /> Süd1<br />
      <input type='radio' name='test' id='test' value='6' checked='checked' /> Süd2<br />
      <input type='radio' name='test' id='test' value='28' /> Testregion<br />
      <input type='radio' name='test' id='test' value='7' /> West1<br />
      <input type='radio' name='test' id='test' value='8' /> West2<br />
      <br />
      <input type='button' value='Radio-Info' onclick='showInfo();'/>

</form>

</body>
</html>
---snap---

Klickt man auf den 'Radio-Info' Button, sollte auch die length-Eigenchaft, also die Anzahl der Auswahlmöglichkeiten angezeigt werden - wird sie aber nicht! Was ist verkehrt???

  1. Hi,

    length ist immer undefined!

    bereits Obj müsste undefined sein: Du verwendest eine ID mehrmals in Deinem Dokument. Dies ist so ungültig wie es nur sein kann; aufgrund der Unmöglichkeit einer Entscheidung, welches Element die ID besitzt, sollte der Browser keines auswählen.

    <input type='radio' name='test' id='test' value='1' /> Nord1<br />

    Warum bestehst Du eigentlich auf die ID, wenn der Name doch seit über einem Jahrzehnt voll und ganz ausreicht?

    Entscheide Dich übrigens bitte, ob Du HTML oder XHTML verwenden möchtest. Die <br>-Elemente solltest Du zudem eliminieren, außerdem drängt sich für "Nord1" etc. das <label>-Element auf. Darüber hinaus empfehle ich, Attributwerte in Double- statt in Singlequotes zu kleiden, sowie auch in Beispieldateien den Quirks-Mode zu verlassen.

    Cheatah

    --
    X-Self-Code: sh:( fo:} ch:~ rl:° br:> n4:& ie:% mo:) va:) de:] zu:) fl:{ ss:) ls:~ js:|
    X-Self-Code-Url: http://emmanuel.dammerer.at/selfcode.html
    X-Will-Answer-Email: No
    X-Please-Search-Archive-First: Absolutely Yes
    1. Hallo,

      danke für die rasche Antwort, die XHTML Schgreibweise sowie die einfachen Anführungszeichen stammen aus dem Original, das die inputs eigentlich per PHP ausgibt...

      Ich habe die IDs rausgeschmissen und die Funktion getElementsByName() verwendet, dann funktioniert es.

      Die Funtion sieht dann so aus:

      ---snip---

      function showInfo () {
              var Obj = document.getElementsByName('test');
              alert("Objektname: " + Obj[0].name + "\n" +
                    "Objekttyp: " + Obj[0].type + "\n" +
                    "Length: " + Obj.length);
            }

      ---snap---

      also, besten Dank nochmal