<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html><head><title>check.html</title><metahttp-equiv="keywords"content="keyword1,keyword2,keyword3"><metahttp-equiv="description"content="this is my page"><metahttp-equiv="content-type"content="text/html; charset=UTF-8"></head><body>
您的爱好很广泛!!!
<br><inputtype="checkbox"name="checkItems"id="checkItems"value="全选/全不选"/>全选/全不选
<br><inputtype="checkbox"name="items"value="足球" />足球
<inputtype="checkbox"name="items"value="篮球"/>篮球
<inputtype="checkbox"name="items"value="游泳"/>游泳
<inputtype="checkbox"name="items"value="唱歌"/>唱歌
<br><inputtype="button"name="checkall"id="checkall"value="全选" /><inputtype="button"name="checkall"id="checkallNo"value="全不选" /><inputtype="button"name="checkall"id="check_revsern"value="反选" /></body><scriptlanguage="JavaScript"></script></html>
那么js的逻辑该怎么处理呢?一种可行的方案是:
<script language="JavaScript">
var cbAll = document.getElementById("checkItems");
var items = document.getElementsByName("items");
var calcCheckedCount = function() {var count = 0;
for (var i = 0; i < items.length; i++) {
var item = items[i];
if (item.checked) {
count++;
}
}
return count;
}
var checkToggle = function() {
cbAll.checked = calcCheckedCount() == items.length;
}
cbAll.onclick = function() {// cbAll.checked = !cbAll.checked; // 搞定自己 --> todo 没必要,系统自动帮你搞定过了!var count = calcCheckedCount();
for (var i = 0; i < items.length; i++) {
var item = items[i];
item.checked = count != items.length;
item.onclick = function() {// 每个item 点击的时候,会导致顶部的全选/全部选 checkbox 勾选状态改变
checkToggle();
}
}
}
// ###################
document.getElementById("checkall").onclick = function() {for (var i = 0; i < items.length; i++) {
var item = items[i];
item.checked = true;
}
checkToggle();
}
document.getElementById("checkallNo").onclick = function() {for (var i = 0; i < items.length; i++) {
var item = items[i];
item.checked = false;
// todo -> 一定要这么干 ,item.setAttribute("checked", ""); 不行!!!
}
checkToggle();
}
document.getElementById("check_revsern").onclick = function() {for (var i = 0; i < items.length; i++) {
var item = items[i];
item.checked = !item.checked;
}
checkToggle();
}
</script>