Hallo,
ich habe einen Baum mit Checkboxen gebaut, in dem die Checkboxen von Elternknoten gesetzt oder gelöscht werden, so bald man auf die Kinder-Checkbox klickt:
http://hilbertz.com/test/checkboxtree.html
Wah! DIV-Soup vom Feinsten. Bitte versuche dies mit HTML in Form verschachtelter UL/LI-Listen umzusetzten.
Das funktioniert prima im FF 1.0.7, in NS 8.0.4. Im IE 6.0 und Opera 8.01 gibt es aber denselben Fehler:
name: TypeError
message: Statement on line 8: Type mismatch (usually a non-object value used where an object is required)
Backtrace:
Line 8 of inline#1 script in http://hilbertz.com/test/checkboxtree.html
obj = what.eval(knoten);
Line 1 of script
checktree(this);Mit what.eval("parentNode") versuche ich, mich die Nodes hinaufzuhangeln, um die Eltern-Checkboxen ein- und auszuschalten.
Hm, wo steht, dass ein HTMLFormElement oder ein HTMLElement eine Methode eval() hat?
Außerdem ist eval evil.
So funktioniert es:
var levels=5 // Anzahl der Knoten
function checktree(what) {
if (what.checked) {
var obj = what.parentNode;
for (k=0;k<levels;k++) {
obj.getElementsByTagName("input")[0].checked=true
obj = obj.parentNode;
}
} else {
var c = what.parentNode.getElementsByTagName("input").length
for (k=0;k<c;k++) {
what.parentNode.getElementsByTagName("input")[k].checked=false
}
}
}
viele Grüße
Axel