<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Document</title>
<style>
* {
padding: 0;
margin: 0;
}
.wrap {
width: 300px;
margin: 100px auto 0;
}
table {
border-collapse: collapse;
border-spacing: 0;
border: 1px solid #c0c0c0;
width: 300px;
}
th,
td {
border: 1px solid #d0d0d0;
color: #404060;
padding: 10px;
}
th {
background-color: #09c;
font: bold 16px "微软雅黑";
color: #fff;
}
td {
font: 14px "微软雅黑";
}
tbody tr {
background-color: #f0f0f0;
}
tbody tr:hover {
cursor: pointer;
background-color: #fafafa;
}
</style>
</head>
<body>
<div class="wrap">
<table>
<thead>
<tr>
<th>
<input type="checkbox" id="j_cbAll" />
</th>
<th>商品</th>
<th>价钱</th>
</tr>
</thead>
<tbody id="j_tb">
<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>
<input type="button" value=" 反 选 " id="btn">
</div>
<script>
//全选功能:
// 全选按钮的状态和其他复选框的状态是统一的
//获取全选按钮
var ck_all = document.querySelector('#j_cbAll');
//获取其他复选框
var cks = document.querySelectorAll('tbody input');
//1. 全选功能实现
ck_all.onclick = function() {
//先获取当前全选按钮的状态
var flag = this.checked;
//将当前全选按钮的状态赋值给其他复选框
for(var i = 0; i < cks.length; i++) {
cks[i].checked = flag;
}
}
//2.单选效果:
// 如果所有的复选框都被选中了,则全选按钮也要被选中
//只要有一个复选框未被选中,则全选按钮不需要选中
//步骤: 需要给每一个复选框注册一个点击事件
// 每点击一次,都要遍历一次复选框的状态
for(var i = 0; i < cks.length; i++) {
cks[i].onclick = function() {
// 标志位: 做记号, 如果记号一直为true,认为所有的按钮都被选中了
// 如果记号改为其他值,只要不是true,那么就认为至少有一个未被选中
var flag = true;
//遍历每一个复选框的状态
for(var j = 0; j < cks.length; j++) {
if(cks[j].checked != true) {
//代表有一个复选框未被选中
flag = false;
break;
}
}
//将全选按钮的状态设置为记号的状态
ck_all.checked = flag;
}
}
//3. 反选功能:
// 选中的设置为未被选中
// 未被选中的设置位置选中
// 如果都选中了,则全选也被选中
var btn = document.querySelector('#btn');
btn.onclick = function() {
//表示全选按钮是否被选中
var flag = true;
//遍历获取每一个复选框的状态
for(var i = 0; i < cks.length; i++) {
//当前复选框是选中的状态
if(cks[i].checked) {
//将当前复选框设置为未被选中的状态
cks[i].checked = false;
flag = false;
}else {
//当前复选框是未选中的状态
cks[i].checked = true;
}
}
//设置全选按钮的效果
ck_all.checked = flag;
}
</script>
</body>
</html>
js 实现全选和反选效果
最新推荐文章于 2023-07-11 22:34:21 发布