表单全选取消全选
案例分析:
1.全选和取消全选做法:让下面所有复选框的checked属性(选中状态)跟随全选按钮即可;
2.下面复选框需要全部选中,上面的全选才可以选中做法:给下面所有复选框绑定点击事件,每次点击,都要循环查看下面所有的复选框是否有没选中的,如果有一个没选中的,上面全选框就不选中。
效果图:

代码:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>表单全选与取消全选</title>
<style>
*{
margin: 0;
padding: 0;
}
table{
margin: 100px auto;
text-align: center;
border: 1px solid gray;
border-spacing: 0;
cursor: pointer;;
}
th,td{
border: 1px solid gray;
padding: 10px;
}
thead{
background-color: powderblue;
}
.bg{
background-color: rgb(190, 189, 189);
}
</style>
</head>
<body>
<div id="wrap">
<table>
<thead>
<tr>
<th><input type="checkbox" id="selectAll"></th>
<th>商品</th>
<th>价格</th>
</tr>
</thead>
<tbody id="select">
<tr>
<td><input type="checkbox"></td>
<td>iphone 8</td>
<td>3999</td>
</tr>
<tr>
<td><input type="checkbox"></td>
<td>iphone 8 plus</td>
<td>4999</td>
</tr>
<tr>
<td><input type="checkbox"></td>
<td>iphone 11</td>
<td>5999</td>
</tr>
<tr>
<td><input type="checkbox"></td>
<td>iphone 11 pro</td>
<td>9999</td>
</tr>
</tbody>
</table>
</div>
<script>
//设计鼠标移入和移出的背景变化
var trs=document.getElementById("select").querySelectorAll("tr");
for(var i=0;i<trs.length;i++){
//鼠标移入事件
trs[i].onmouseover=function(){
this.className="bg";
}
//鼠标移出事件
trs[i].onmouseout=function(){
this.className="";
}
}
//1.全选和取消全选
//获取元素
var selectAll=document.getElementById("selectAll"); //全选按钮
var select=document.getElementById("select").getElementsByTagName("input"); //下面所有的复选框
//注册事件
selectAll.onclick=function(){
//this.checked可以得到当前复选框的选中状态,如果是true则表示选中,如果是false就表示未选中
for(var i=0;i<select.length;i++){
//看全选框是否全选,把它的选中状态赋值给下面所有的复选框
select[i].checked=this.checked;
}
}
//2.判断下面的是否全选
for(var i=0;i<select.length;i++){
select[i].onclick=function(){
var flag=true; //注意flag要放在点击事件里……
//下面的变量i是在另一个函数里,和外层的i是不同的作用域
for(var i=0;i<select.length;i++){
if(!select[i].checked){
flag=false;
break;
}
}
selectAll.checked=flag;
}
}
</script>
</body>
</html>