Hi,
Es geht darum anhand einer Checkbox die anderen Checkboxen zu checken bzw. unchecken. Dazu habe ich eine codesparende Variante und eine sehr lange.
Die „lange” Version hast du aber auch unnötig lang gemacht.
Und hier die lange, funktionierende Variante:
function checkAllModules(cbx){
if (cbx.checked===true)
{
document.getElementById('AB').checked=true;
document.getElementById('CD').checked=true;
document.getElementById('EF').checked=true;
document.getElementById('GH').checked=true;}
else
{
document.getElementById('AB').checked=false;
document.getElementById('CD').checked=false;
document.getElementById('EF').checked=false;
document.getElementById('GH').checked=false;
}
}
Warum hier Zugriff über die IDs der Checkboxen, und warum für true und false zwei einzelne Anweisungsblöcke?
Was spricht analog zu
> ~~~javascript
checkboxes = document.getElementsByName('module[]');
> for each(var checkbox in checkboxes)
> checkbox.checked = source.checked;}
>
dagegen, es mit einer simplen for-Schleife zu machen, die über die Items der NodeList, die getElementsByName liefert, iteriert?
Das wären nur mal zwei Möglichkeiten, es simpel für alle Browser kompatibel umzusetzen:
for(var i=0, checkBoxes=document.getElementsByName("module[]"), l=checkBoxes.length; i<l; i++) {
checkBoxes[i].checked = source.checked;
}
// oder
for(var i=0,checkBox; checkBox=document.forms[...].elements["module[]"][i++]; checkBox.checked = source.checked);
MfG ChrisB
“Whoever best describes the problem is the person most likely to solve the problem.” [Dan Roam]