<input type="checkbox" name="checkC" onClick="resAll()">1
<input type="checkbox" name="checkC" onClick="resAll()">2
<input type="checkbox" name="checkC" onClick="resAll()">3
<input type="checkbox" name="checkC" onClick="resAll()">4
<input type="checkbox" name="checkC" onClick="resAll()">5
<input type="checkbox" name="checkC" onClick="resAll()">6
<input type="checkbox" name="checkC" onClick="resAll()">7
<input type="checkbox" name="all" id="all" onClick="checkAll()">全选
<script type="text/javascript" language="javascript">
function checkAll(){
var d = document,
items=d.getElementsByName("checkC"),
itemall = d.getElementById("all"),
len = items.length;
for(var i=0;i<len;i++){
items[i].checked=itemall.checked;
}
}
function resAll(){
var d = document,
items=d.getElementsByName("checkC"),
itemall = d.getElementById("all"),
ite=0;
for(var i=0;i<items.length;i++){
if(items[i].checked){
ite++;
}
}
if(ite==items.length-1&&itemall.checked){
itemall.checked=false;
}
if(ite==items.length&&!itemall.checked){
itemall.checked=true;
}
}
</script>
注意:getElementsByName的兼容性问题。
1.name 和 id 属性一起抓
<input type="checkbox" name="checkC" onClick="resAll()">1
<input type="checkbox" id="checkC" onClick="resAll()">2
IE下:document.getElementsByName.length =2
FF下:document.getElementsByName.length =1
2.如果标签没有name属性不会抓取
<input type="checkbox" name="checkC" onClick="resAll()">1
<input type="checkbox" id="checkC" onClick="resAll()">2
<p name="checkC">3</p>
IE下:document.getElementsByName.length =2
FF下:document.getElementsByName.length =3
考虑到IE这种问题,尽量避免使用getElementsByName
尽量使用: document.getElementsByTagName('input')
<div id="box" style="height:20px; background-color:#ccc;">
<input type="checkbox">1
<input type="checkbox">2
<input type="checkbox">3
<input type="checkbox">4
<input type="checkbox">5
<input type="checkbox">6
<input type="checkbox">7
<input type="checkbox" id="all2">全选
</div>
<script type="text/javascript">
var EventUtil = {
addHandler: function(element, type, handler){
if (element.addEventListener){
element.addEventListener(type, handler, false);
} else if (element.attachEvent){
element.attachEvent("on" + type, handler);
} else {
element["on" + type] = handler;
}
},
getEvent: function(event){
return event ? event : window.event;
},
getTarget: function(event){
if (event.target){
return event.target;
} else {
return event.srcElement;
}
}
}
EventUtil.addHandler(window,"load",function(){
var box = document.getElementById('box'),
dga = document.getElementById('all2'),
boxItem= box.getElementsByTagName('input'),
len = boxItem.length-1;
EventUtil.addHandler(box,'click',function(e){
var e = EventUtil.getEvent(e),target = EventUtil.getTarget(e);
if(target.nodeName =='INPUT' && target.id =='all2'){
if(target.checked){
for(var i=0;i<len;i++){
boxItem[i].checked=true;
}
}
else{
for(var i=0;i<len;i++){
boxItem[i].checked = false;
}
}
}
else{
var ite=0;
for(var i=0;i<len;i++){
if(boxItem[i].checked){
ite++;
}
}
if(ite==len-1){
dga.checked=false;
}
if(ite==len){
dga.checked=true;
}
}
});
})
</script>
浙公网安备 33010602011771号