Hi,本文展示如何使用JavaScript实现表格的全选与反选状态,本文为本人自己摸索的内容(编程小白),因此展示的内容、代码语法可能不正确,还请理解(李姐万岁)
一、效果展示
二、创建HTML结构
<!DOCTYPE html
PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>表格全选案例</title>
<style type="text/css">
* {
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;
text-align: center;
}
tbody tr:hover {
cursor: pointer;
background-color: #fafafa;
}
</style>
</head>
<body>
<div id="" class="wrap">
<table id="tb">
<thead>
<tr>
<th><input type="checkbox" id="j_cbAll" /></th>
<th>菜名</th>
<th>饭店</th>
<th>删除</th>
</tr>
</thead>
<tbody id="j_tb">
<tr>
<td><input type="checkbox" /></td>
<td>红烧肉</td>
<td>江南饭店</td>
<td><a href="javascript:;">删除</a></td>
</tr>
<tr>
<td><input type="checkbox" /></td>
<td>蛋炒饭</td>
<td>小饭店</td>
<td><a href="javascript:;">删除</a></td>
</tr>
<tr>
<td><input type="checkbox" /></td>
<td>排骨</td>
<td>前进饭店</td>
<td><a href="javascript:;">删除</a></td>
</tr>
<tr>
<td><input type="checkbox" /></td>
<td>红烧鱼</td>
<td>月亮饭店</td>
<td><a href="javascript:;">删除</a></td>
</tr>
</tbody>
</table>
</div>
</body>
</html>
三、Js事件
当点击全选框时,下面的分选框也全部选中,当其中有一个分选框没被选中时,全选框也不被选中
首先获取全选框元素与四个分选框元素。
let j_cbAll = document.getElementById("j_cbAll");
let j_tbs = document.querySelectorAll('#j_tb input');
在绑定全选框的点击事件内使用For循环来遍历分选框的点击事件,当全选框选中时,遍历的分选框也全部选中。
j_cbAll.addEventListener('click', function () {
for (let i = 0; i < j_tbs.length; i++) {
j_tbs[i].checked = this.checked;
}
})
然后在使用For循环再次遍历分选框点击事件,并获取状态为选中状态下的分选框个数,然后判断选中的分选框个数与分选框的个数是否一致,如一致则全选框为选中状态,否则反之。
for (let i = 0; i < j_tbs.length; i++) {
j_tbs[i].addEventListener('click', function () {
let checkedLength = document.querySelectorAll('#j_tb input:checked').length;
if (checkedLength == j_tbs.length) {
j_cbAll.checked = true;
} else {
j_cbAll.checked = false;
}
})
}
四、完整代码
OK,本文到此结束,以上内容均为本人所学知识,学艺不精,如有错误还请理解。
温馨提示:最后更新于
2024-03-28 00:13:22
,某些文章具有时效性,若有错误或已失效,请评论反馈。© 版权声明
THE END
暂无评论内容