Checkbox nach manuellen check nicht mehr durch setAttribute änderbar

Jungspund

Mitglied
Hallo ich habe folgendes Problem,
undzwar besitze ich mehrere Checkboxen, die ich bei click auf eine andere Checkbox alle checken oder unchecken kann.
Das funktioniert soweit auch, doch wenn ich eine der Checkboxen einzeln anklicke, ist diese danach nicht mehr durch die Javascript methode änderbar.

hier noch kurz der Code für die eine Checkbox:

Code:
function mark() {
            var table       = document.getElementById("file_table");
            var body        = table.getElementsByTagName("tbody")[0];
            var length      = table.rows.length;
       
            if(marked) {
                for(i=0;i<length;++i) {
                    var row = body.getElementsByTagName("tr")[i];
                    var box  = row.getElementsByTagName("td")[0];
                    box.getElementsByTagName("input")[0].removeAttribute("checked");
                }
                marked = false;
            }
            else {
                for(i=0;i<length;++i) {
                    var row = body.getElementsByTagName("tr")[i];
                    var box  = row.getElementsByTagName("td")[0];
                    box.getElementsByTagName("input")[0].setAttribute("checked","checked");
                }
                marked      = true;
            }
        }
 
Eventuell liegt es daran, dass du über die Attribute den Status veränderst.

Probiere mal folgendes:
Javascript:
// Jeweils innerhalb der for-Schleife!
box.getElementsByTagName("input")[0].checked = false;

box.getElementsByTagName("input")[0].checked = true;
 
Zuletzt bearbeitet von einem Moderator:
Verwende statt:
Code:
box.getElementsByTagName("input")[0].removeAttribute("checked");
dies:
Code:
box.getElementsByTagName("input")[0].checked=false;

und statt:
Code:
box.getElementsByTagName("input")[0].setAttribute("checked","checked");
jenes:
Code:
box.getElementsByTagName("input")[0].checked=true;


Der Grund: wenn du eine checkbox anklickst, verändert sich nicht ihr checked-Attribute, es verändert sich ihre checked-Eigenschaft, was Vorrang vor dem Attribut hat. Änderungen am (HTML)-Attribut zeigen somit keine Wirkung.
 
ok danke funktioniert jetzt, nur komisch dass dann
box.getElementsByTagName("input")[0].setAttribute("checked","checked");
überhaupt eine Legitimität besitzt...
 
Zurück