一、核心算法:
1、点击全选按钮时,
if(全选按钮选中){ 那么使下面所有小按钮全选中 }
else { 是下面所有的按钮处于未选中状态 }
2、点击下面的小按钮时,
只要有一个没有被选中,那么全选按钮就是未选中状态,
否则,全选按钮被选中
二、实现代码
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<style>
* {
margin: 0;
padding: 0;
}
table {
width: 400px;
text-align: center;
margin: 100px auto;
}
thead tr {
height: 40px;
background-color: rgb(140, 181, 248);
}
tbody tr {
height: 40px;
background-color: antiquewhite;
}
</style>
</head>
<body>
<table>
<thead>
<tr>
<th>
<input type="checkbox" id="j_cbAll">
</th>
<th>商品</th>
<th>价格</th>
</tr>
</thead>
<tbody>
<tr>
<td><input type="checkbox"></td>
<td>iphone8</td>
<td>8000</td>
</tr>
<tr>
<td><input type="checkbox"></td>
<td>ipad Pro</td>
<td>5000</td>
</tr>
<tr>
<td><input type="checkbox"></td>
<td>iPad Air</td>
<td>2000</td>
</tr>
<tr>
<td><input type="checkbox"></td>
<td>Apple Watch</td>
<td>2000</td>
</tr>
</tbody>
</table>
<script>
var j_cbAll = document.querySelector('#j_cbAll');
var checkboxs = document.querySelector('tbody').querySelectorAll('input');
// 点击全选按钮时
j_cbAll.onclick = function() {
// 如果全选按钮是true
if (this.checked) {
// 将下面所有的小按钮选中
for (var i = 0; i < checkboxs.length; i++) {
checkboxs[i].checked = true;
}
} else {
// 否则将下面所有的小按钮全不选
for (var i = 0; i < checkboxs.length; i++) {
checkboxs[i].checked = false;
}
}
}
// 当点击下面的小按钮时
for (var i = 0; i < checkboxs.length; i++) {
checkboxs[i].onclick = function() {
// 只要有一个没选中,那么全选按钮就是false
for (var j = 0; j < checkboxs.length; j++) {
if (!checkboxs[j].checked) {
j_cbAll.checked = false;
return;
}
}
// 否则全选按钮就是true
j_cbAll.checked = true;
}
}
</script>
</body>
</html>
三、实现效果
全不选
全选:
部分选择: