Moin.
Wie auch immer. noch eleganter wäre es, wenn man JS vom Markup trennt und die events dynamisch bindet. [...] Naja, vermutlich overkill für diese Aufgabe, aber elegant ;-)
Z.B. so ;)
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<title>Test</title>
<script type="text/javascript">
onload = function() {
var deps = {
sport : ['ballsport'],
ballsport : ['fussball', 'handball'],
fussball : [],
handball : []
};
var form = document.forms[0];
for(var name in deps) {
form[name].requires = [];
form[name].inferences = deps[name];
form[name].onclick = function() {
var arr = this.checked ? this.requires : this.inferences;
for(var i = 0; i < arr.length; ++i) {
var el = form[arr[i]];
if(el.checked !== this.checked) {
el.checked = this.checked;
el.onclick();
}
}
};
}
for(var name in deps) {
for(var i = 0; i < deps[name].length; ++i)
form[deps[name][i]].requires.push(name);
}
};
~~~~~~html
</script>
<body>
<form action="">
<input type="checkbox" name="sport"> Sport<br>
<input type="checkbox" name="ballsport"> Ballsport<br>
<input type="checkbox" name="fussball"> Fussball<br>
<input type="checkbox" name="handball"> Handball
</form>
Christoph