Bueno, al final he logrado resolverlo. Con toda seguridad se podría construir de una manera más elegante, pero para lo que yo quiero me funciona perfectamente. Ahí va el código por si a alguien le interesa:
<html><head>
<SCRIPT LANGUAGE="JavaScript">
<!-- Modified By: Steve Robison, Jr. (
[email protected]) -->
<!-- This script and many more are available free online at -->
<!-- The JavaScript Source!!
http://javascript.internet.com -->
function check(field) {
var activar = "false";
for (k = 0; k < field.length; k++) {
if (field[k].value=="Marcar Todos") {
activar="true";
}
}
if (activar=="true") {
for (i = 0; i < field.length; i++) {
field[i].checked = true;
}
return "Desmarcar Todos";
}
if (activar=="false") {
for (i = 0; i < field.length; i++) {
field[i].checked = false;
}
return "Marcar Todos";
}
}
// End -->
</script>
</HEAD>
<BODY>
<form name=myform action="" method=post>
<table>
<tr><td>
<b>Your Favorite Scripts & Languages</b><br>
<input type=checkbox name=list value="1">Java<br>
<input type=checkbox name=list value="2">JavaScript<br>
<input type=checkbox name=list value="3">ASP<br>
<input type=checkbox name=list value="4">HTML<br>
<input type=checkbox name=list value="5">SQL<br>
<br>
<input type=button name=list value="Marcar Todos" onClick="this.value=check(this.form.list)"><p>
<input type=checkbox name=list1 value="1">Java<br>
<input type=checkbox name=list1 value="2">JavaScript<br>
<input type=button name=list1 value="Marcar Todos" onClick="this.value=check(this.form.list1)"><p>
<input type=checkbox name=list2 value="1" checked>Java<br>
<input type=checkbox name=list2 value="2" checked>JavaScript<br>
<input type=button name=list2 value="Desmarcar Todos" onClick="this.value=check(this.form.list2)"><p>
<input type=checkbox name=list3 value="1">Java<br>
<input type=checkbox name=list3 value="2">JavaScript<br>
<input type=button name=list3 value="Marcar Todos" onClick="this.value=check(this.form.list3)"><p>
</td></tr>
</table>
</form>
</body>
</html>
El problema que tiene es que a los botones hay que darles el valor "Marcar Todos" o "Desmarcar Todos". Ahí es donde falla la elegancia del script. Pero pienso que puede ser de utilidad.
Un Saludo. :-|