Anzahl Checkboxen bestimmen

  • Hallo,


    in einer Form habe ich eine unterschiedliche Anzahl Checkboxen:

    Code
    <form name="Form1">
       <input type="checkbox" name="Wahl" value="4179038">
       <input type="checkbox" name="Wahl" value="2345676">
       ......
       <p><a href="javascript:box_aufrufen();"><img src="grafik\irgendwas.gif"></a></p>
    </form>


    Die Anzahl der Checkboxen lese ich so aus:

    Code
    <script type="text/javascript">
    function box_aufrufen(dummy) {
      ...
      alert("wie viel "+document.Form1['Wahl'].length); 
      ...
    }
    </script>

    Aber sobald nur eine Checkbox in der Form ist, melden document.Form1['Wahl'].length oder auch document.Form1.Wahl.length immer ein undefined.

    Sobald mehrere Checkboxen da sind, wird die korrekte Anzahl ausgegeben.

    Was mache ich falsch?


    Stephan

  • Weil bei einem Element das Element selbst zurückgegeben wird. Und dazu steht kein length zur Verfügung.

    Nutze lieber querySelectorAll(), das liefert immer eine Collection:

    Code
    document.querySelector( '[name="Form1"]' ).querySelectorAll( '[type="checkbox"]' ).length;
  • Weil bei einem Element das Element selbst zurückgegeben wird. Und dazu steht kein length zur Verfügung.

    Nutze lieber querySelectorAll(), das liefert immer eine Collection:

    Code
    document.querySelector( '[name="Form1"]' ).querySelectorAll( '[type="checkbox"]' ).length;

    Das funktioniert, danke, aber jetzt meldet

    Code
    Anzahl=document.querySelector('[name="Form1"]').querySelectorAll('[type="checkbox"]').length;
    for (i=0; i<Anzahl; i++) {
      if (document.Form1['Wahl'][i].checked == true) { 
        Parameter=Parameter+"|"+document.Form1['Wahl'][i].value;
      }
    }

    ein document.Form1.Wahl[i] is undefined, wenn nur eine Checkbox in der Form ist. Bei mehreren ist alles ok.


    Stephan

  • Nunja... Mit Arroganz hat das sicher nichts zu tun.

    Man darf doch wohl davon ausgehen, dass Du etwas lernen willst, wenn Du in einem Forum zum Thema Webentwicklung Fragen stellst, oder?

    Du hast den Satz halt nicht verstanden und die Codezeile aus #2 einfach nur kopiert, ohne großartig nachzudenken, hat geklappt, fertig.

    Warum, wieso und weshalb, steht halt im ersten Satz in #2. Wenn Du den verstanden hättest, wäre Dir klar, wo der zweite Fehler liegt.

    Mehr als darauf hinzuweisen, wo der Fehler liegt, kannst Du nicht erwarten. Eigeninitiative muss von Dir kommen.


    Wenn Du Dich deswegen ungerecht behandelt fühlst und sogar um Löschung Deines Account bittest, tut es mi leid, Dir sagen zu müssen, dass Du das falsche Hobby gewählt hast.

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!