Script: Alle Checkboxen markieren hat Fehler?

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Script: Alle Checkboxen markieren hat Fehler?

    Ich habe hier ein Script mit dem man mit dem Anklicken der Checkbox "Gruppe" alle anderen Checkboxen der jeweiligen Gruppe aktiveren kann.
    Ich habe das Script erweitert, sodass man 3 Gruppen hat. Einzeln funktioniert das "Alles markieren" wunderbar, wenn jedoch die erste Gruppe markiert ist, lässt sich die zweite erst durch mehrmaliges anklicken markieren. Genauso Gruppe3. Woran kann das liegen?

    Quellcode

    1. <html>
    2. <head>
    3. <script type="text/javascript">
    4. <!-- Begin
    5. var checkflag = "false";
    6. function check(field) {
    7. if (checkflag == "false") {
    8. for (i = 0; i < field.length; i++) {
    9. field[i].checked = true;}
    10. checkflag = "true";
    11. return " keine "; }
    12. else {
    13. for (i = 0; i < field.length; i++) {
    14. field[i].checked = false; }
    15. checkflag = "false";
    16. return " alle "; }
    17. }
    18. // End -->
    19. </script>
    20. </head>
    21. <body>
    22. <form>
    23. Grupp1:<input type="checkbox" value=" alle " onClick="this.value=check(this.form.ide1)"><br>
    24. 1<input type="checkbox" id="ide1" name="at1" value="AT1"><br>
    25. 2<input type="checkbox" id="ide1" name="at2" value="AT2"><br>
    26. 3<input type="checkbox" id="ide1" name="at3" value="AT3"><br>
    27. <br>
    28. Grupp2:<input type="checkbox" value=" alle " onClick="this.value=check(this.form.ide2)"><br>
    29. 1<input type="checkbox" id="ide2" name="at4" value="AT4"><br>
    30. 2<input type="checkbox" id="ide2" name="at5" value="AT5"><br>
    31. 3<input type="checkbox" id="ide2" name="at6" value="AT6"><br>
    32. <br>
    33. Grupp3:<input type="checkbox" value=" alle " onClick="this.value=check(this.form.ide3)"><br>
    34. 1<input type="checkbox" id="ide3" name="at7" value="AT7 on"><br>
    35. 2<input type="checkbox" id="ide3" name="at8" value="AT8 on"><br>
    36. 3<input type="checkbox" id="ide3" name="at9" value="AT9 on"><br>
    37. </form>
    38. </body>
    39. </html>
    Alles anzeigen
  • Naja, das liegt am checkflag, das ja von allen drei Varianten genutzt wird. Mach dir am besten ein Array/Object draus.

    var checkflag = {ide1: false, ide2: false, ide3: false};
    function check(field) {
    if (checkflag[field] === false) {
    ...

    Bin mir außerdem nicht sicher, ob das so in allen Browsern funktioniert. (eigentlich darf es nicht funktionieren)
    Mit this.form referenziert man eigentlich Elemente per Namen - nicht per ID.
    Das erkennst du auch daran, dass ID ein "eindeutiger Identifier" ist - du aber mehrere Elemente mit der selben ID hast.
    w3c konform ist das allemal nicht.

    Was du also noch so ändern müsstest...

    Quellcode

    1. 1<input type="checkbox" name="ide1[]" value="AT1"><br/>
    2. 2<input type="checkbox" name="ide1[]" value="AT1"><br/>
  • Ok, aber leider brauche ich den Namen für das Formular selber und war somit gezwungen ID zu benutzen. W3C würde mich sicher anzeigen für mein Formular, aber das ist egal, da nur ich es benutzen werde. Und die Ausgabedatei, die das Formular ausspuckt ist valide, von daher also nicht schlimm. Als Browser sollte es auch nur im Firefox und IE funktionieren. Das reicht.
    Vielen Dank.