<style>
* {
margin: 0;
padding: 0;
}
.wrap {
width: 800px;
height: 400px;
margin: 0 auto;
}
table {
margin: 20px auto;
}
</style>
<div class="wrap">
<table cellspacing="20">
<tr>
<th><input type="checkbox" value="全选" id="all" /></th>
<th>产品</th>
<th>价钱</th>
</tr>
<tr>
<td><input type="checkbox" class="check" /></td>
<td>iphone</td>
<td>5000</td>
</tr>
<tr>
<td><input type="checkbox" class="check" /></td>
<td>iwatch</td>
<td>2000</td>
</tr>
<tr>
<td><input type="checkbox" class="check" /></td>
<td>ipad</td>
<td>3000</td>
</tr>
</table>
<input type="button" class="inverse" value="反选" />
<script>
var btnAll = document.querySelector("#all"); // 全选按钮
var checkArr = document.querySelectorAll(".check"); // 商品按钮组
var inverse = document.querySelector(".inverse");//反选按钮
//全选按钮
btnAll.onclick =function(){
//获取全选按钮状态
var state = this.checked
for(var i =0;i<checkArr.length;i++){
checkArr[i].checked=state//如果全选按钮被选中,商品按钮组也都选中
}
}
//反选按钮
inverse.onclick = function(){
for(var i =0;i<checkArr.length;i++){
checkArr[i].checked=!checkArr[i].checked//点击反选按钮,商品组的按钮状态与原来相反
}
isAllchecked()//如果全选按钮选中了,点击反选按钮取消(由于商品组按钮被取消,所以全选按钮也取消)
}
//如果商品组按钮都选中,全选按钮自动选中(当每一次商品组按钮状态发生改变时,都要判断是否全选)
for(var i =0;i<checkArr.length;i++){
checkArr[i].onclick=function(){
isAllchecked()
}
}
//判断商品是否全选
function isAllchecked (){
var flag = true//假设都选中
for(var i =0;i<checkArr.length;i++){
if(!checkArr[i].checked){
flag=false//如果有一个没被选中,就返回flase
break
}
}
btnAll.checked=flag//全选按钮的状态跟着flag的值变化
}
</script>