JavaScript实现复选框全选、全不选与反选功能详解
本文介绍如何使用JavaScript实现复选框的全选、全不选和反选功能。通过获取DOM元素并绑定点击事件,利用checked属性控制选中状态。代码包含HTML结构与JS逻辑,适合前端开发者参考学习。
JavaScript实现复选框全选、全不选与反选功能详解
本文通过具体实例,详细讲解如何利用JavaScript实现复选框的全选、全不选以及反选功能,供读者参考学习。
运行效果如所示:点击“全选”按钮后,所有复选框均被选中;点击“全不选”按钮,所有复选框取消选中;点击“反选”按钮,则对当前选中状态进行反向切换。

对应的HTML结构代码如下:
<input class = 'check' type="checkbox" >
<input class = 'check' type="checkbox">
<input class = 'check' type="checkbox">
<input class = 'check' type="checkbox">
<input class = 'check' type="checkbox">
<input id="checkAll" type="button" value="全选">
<input id="unCheckAll" type="button" value="全不">
<input id="reverseCheck" type="button" value="反选">
JavaScript逻辑代码如下:
<script>
/*一:需求分析:
(1)点击全选:选中所有选择框(设置checked属性为true)
(2)点击全不选:不选中所有选择框(设置checked属性为false)
(3)点击反选:让每一个选择框的checked属性与自身相反
二:思路分析
1.获取元素
2.注册事件
3.事件处理
*/
//1.获取页面元素
var checkAll = document.getElementById('checkAll');//全选
var unCheckAll = document.getElementById('unCheckAll');//全不选
var reverseCheck = document.getElementById('reverseCheck');//反选
var checkList = document.getElementsByClassName('check');//选择框列表
//2.注册事件
//2.1 全选
checkAll.onclick = function(){
//3.事件处理:选中所有选择框(设置checked属性为true)
for(var i = 0;i<checkList.length;i++){
checkList[i].checked = true;
}
}
//2.2 全不选
unCheckAll.onclick = function(){
//3.事件处理:不选中所有选择框(设置checked属性为false)
for(var i = 0;i<checkList.length;i++){
checkList[i].checked = false;
}
}
//2.3 反选
reverseCheck.onclick = function(){
//3.事件处理:让每一个选择框的checked属性与自身相反
for(var i = 0;i<checkList.length;i++){
checkList[i].checked = !checkList[i].checked;//逻辑非取反
// if (checkList[i].checked == true){
// checkList[i].checked = false;
// }else{//false
// checkList[i].checked = true;
// }
}
}
</script>
完整的示例代码汇总如下:
<!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>www.jb51.net JS全选、全不选、反选</title>
</head>
<body>
<input class = 'check' type="checkbox" >
<input class = 'check' type="checkbox">
<input class = 'check' type="checkbox">
<input class = 'check' type="checkbox">
<input class = 'check' type="checkbox">
<input id="checkAll" type="button" value="全选">
<input id="unCheckAll" type="button" value="全不">
<input id="reverseCheck" type="button" value="反选">
<script>
/*一:需求分析:
(1)点击全选:选中所有选择框(设置checked属性为true)
(2)点击全不选:不选中所有选择框(设置checked属性为false)
(3)点击反选:让每一个选择框的checked属性与自身相反
二:思路分析
1.获取元素
2.注册事件
3.事件处理
*/
//1.获取页面元素
var checkAll = document.getElementById('checkAll');//全选
var unCheckAll = document.getElementById('unCheckAll');//全不选
var reverseCheck = document.getElementById('reverseCheck');//反选
var checkList = document.getElementsByClassName('check');//选择框列表
//2.注册事件
//2.1 全选
checkAll.onclick = function(){
//3.事件处理:选中所有选择框(设置checked属性为true)
for(var i = 0;i<checkList.length;i++){
checkList[i].checked = true;
}
}
//2.2 全不选
unCheckAll.onclick = function(){
//3.事件处理:不选中所有选择框(设置checked属性为false)
for(var i = 0;i<checkList.length;i++){
checkList[i].checked = false;
}
}
//2.3 反选
reverseCheck.onclick = function(){
//3.事件处理:让每一个选择框的checked属性与自身相反
for(var i = 0;i<checkList.length;i++){
checkList[i].checked = !checkList[i].checked;//逻辑非取反
// if (checkList[i].checked == true){
// checkList[i].checked = false;
// }else{//false
// checkList[i].checked = true;
// }
}
}
</script>
</body>
</html>
实例演示
<!DOCTYPE html>
<html>
<head lang="en">
<meta charset="UTF-8">
<title></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>诺基亚</td>
<td>¥3000</td>
</tr>
<tr>
<td>
<input type="checkbox"/>
</td>
<td>索尼爱立信</td>
<td>¥4500</td>
</tr>
<tr>
<td>
<input type="checkbox"/>
</td>
<td>华为</td>
<td>¥5000</td>
</tr>
<tr>
<td>
<input type="checkbox"/>
</td>
<td>vivo</td>
<td>¥2700</td>
</tr>
</tbody>
</table>
</div>
<script>
function my$(id) {
return document.getElementById(id);
}
//获取全选的这个复选框
var ckAll = my$("j_cbAll");
//获取tbody中所有的小复选框
var cks = my$("j_tb").getElementsByTagName("input");
//点击全选的这个复选框,获取他当前的状态,然后设置tbody中所有复选框的状态
ckAll.onclick = function () {
//console.log(this.checked);
for (var i = 0; i < cks.length; i++) {
cks[i].checked = this.checked;
}
};
//获取tbody中所有的复选框,分别注册点击事件
for(var i=0;i<cks.length;i++){
cks[i].onclick=function () {
var flag=true;//默认都被选中了
//判断是否所有的复选框都选中
for(var j=0;j<cks.length;j++){
if(!cks[j].checked){
//没选中就进来了
flag=false;
break;
}
}
//全选的这个复选框的状态就是flag这个变量的值
ckAll.checked=flag;
};
}
</script>
</body>
</html>感兴趣的朋友可以使用在线HTML/CSS/JavaScript代码运行工具:http://tools.jb51.net/code/HtmlJsRun测试上述代码运行效果。
更多关于JavaScript相关内容感兴趣的读者可查看本站专题:《JavaScript操作DOM技巧总结》、《JavaScript页面元素操作技巧总结》、《JavaScript事件相关操作与技巧大全》、《JavaScript查找算法技巧总结》、《JavaScript数据结构与算法技巧总结》、《JavaScript遍历算法与技巧总结》及《JavaScript错误与调试技巧总结》
希望本文所述对大家JavaScript程序设计有所帮助。
JavaScript将图片转换为Base64编码的两种途径
2026-11-05 16:43:05
怎么在 Vue 或 React 项目中正确集成 animate.js
2026-11-05 10:23:38
JS注册事件:addEventListener基础语法与参数详解
2026-11-05 08:44:56
JSP和JS的区别:运行环境与服务端/客户端职责解析
2026-11-04 23:34:36
pdf.js 官方下载地址:GitHub Release 获取预编译包
2026-11-04 23:07:27
