html部分
<!-- 全選、全不選、反選、子級全部選中則全選中,有一個沒選中則不全選中 -->
<table>
<thead id="tHead">
<tr>
<th>
<input type="checkbox" id="Qxuan">全選
</th>
<th>商品</th>
<th>價格</th>
</tr>
</thead>
<tbody id="tBody">
<tr>
<td>
<input type="checkbox" id="xuanze">
</td>
<td>phone Huawei</td>
<td>8000</td>
</tr>
<tr>
<td>
<input type="checkbox" id="xuanze">
</td>
<td>pad Huawei</td>
<td>600</td>
</tr>
<tr>
<td>
<input type="checkbox" id="xuanze">
</td>
<td>laptop Huawei</td>
<td>6000</td>
</tr>
<tr>
<td>
<input type="checkbox" name="" id="fanXuan">反選
</td>
<td></td>
<td></td>
</tr>
</tbody>
</table>
js部分
<script>
//全選和全不選:點選全選按鈕,如果子checkbox為選中狀态,則變成不選中,為不選中狀态,則變成選中狀态
//反選:點選反選按鈕,子沒被選中的變選中,選中的變沒選中
//子影響父:子中有一個沒被選中,則全選按鈕,不能被選中,子全部被選中,則全選變全選中
//擷取
var Qxuan=document.getElementById('Qxuan');
var xuanzes=document.querySelectorAll('#xuanze');
var fanXuan=document.getElementById('fanXuan');
//全選和全不選
Qxuan.onclick=function(){
for(var i=0;i<xuanzes.length;i++){
xuanzes[i].checked=Qxuan.checked;
}
}
//反選
fanXuan.onclick=function(){
for(var i=0;i<xuanzes.length;i++){
if(xuanzes[i].checked==true){
xuanzes[i].checked=false;
}else if(xuanzes[i].checked==false){
xuanzes[i].checked=true;
}
}
}
//子影響父
for(var i=0;i<xuanzes.length;i++){
xuanzes[i].onclick=function(){
//定義一個變量,假設表示目前子為全選
var flag=true;
//判斷每一個子的目前狀态,如有一個為選中則,flag變為true,全選的狀态與flag相同
for(var j=0;j<xuanzes.length;j++){
if(!xuanzes[j].checked){
flag=false;
}
}
Qxuan.checked=flag;
}
}
</script>