JavaScript实现表单全选与反选功能详解
本文详细介绍如何使用JavaScript实现网页表单中复选框的全选与反选功能。通过获取DOM元素,利用checked属性判断状态,并绑定点击事件,实现全选按钮与子选项的双向联动。代码包含详细注释,解析了遍历判断与状态同步的核心逻辑,适用于购物车列表等常见场景。
JavaScript实现表单全选与反选功能详解
本文提供了一段JavaScript代码示例,用于演示如何在网页表单中实现复选框的全选或反选功能,供读者参考学习。
在网页开发中,checkbox复选框的应用十分广泛,实现列表的全选或全不选效果是常见需求,例如电商平台的购物车商品列表。本文将深入解析这一常见功能的选择效果及其底层实现思路,并展示具体的JavaScript代码实现。
<script>
// 表单的全选与全不选案例:注:checkbox复选框的checked属性值为true则为选中状态,为false则为未选中状态
var j_cbAll = document.getElementById('j_cbAll'); // 获取全选按钮
var j_tbs = document.getElementById('j_tb').getElementsByTagName('input'); // 获取所有input复选框
// 注册事件
// 1.全选按钮的事件
j_cbAll.onclick = function () {
// this.checked可以获取当前复选框的状态返回值为true或false
for (var i = 0; i < j_tbs.length; i++) {
j_tbs[i].checked = this.checked; // 让tbody里的复选框每一个的checked的值都等于当前全选按钮的checked的值,所以它们的状态就会一致了
}
}
// 2.tbody里面的复选框的事件:下面全选中了则全选按钮也要为选中状态,若有至少一个未选中则全选按钮也为未选中状态,注意:tbody里面的复选框每一次被点击都需要做判断,看是否所有的复选框都被选中了
for (var i = 0; i < j_tbs.length; i++) {
j_tbs[i].onclick = function () {
// flag 用于控制全选按钮是否选中
var flag = true;
// 每次点击下面的复选框都要循环检查4个复选框是否全被选中了
for (var i = 0; i < j_tbs.length; i++) {
console.log('---'+j_tbs[i].checked);
if (j_tbs[i].checked == false) { // 有一个按钮没有被选中就执行内部代码修改flag的值为false
flag = false;
break; // 退出里层for循环,这样可以提高执行效率,因为只要有一个没有被选中,剩下的就无需再判断了
}
}
j_cbAll.checked = flag; // 循环结束后将flag的值给全选按钮
}
}
</script>
以下是代码执行后的效果截图展示。

当用户点击“全选”按钮时,界面呈现如下状态:再次点击该按钮,状态将发生反转。

当用户手动选中下方的各个子复选框时,界面显示如下状态。

需要注意的一个交互细节是:如果下方的四个子复选框未被全部选中,上方的“全选”按钮将保持未选中状态。
该功能的内部JavaScript实现逻辑主要包含两个部分:第一部分是处理“全选”按钮的功能。当“全选”按钮处于选中状态时,其checked属性值为true,此时需将该值赋给下方所有的子复选框,使它们全部选中;反之,若“全选”按钮未选中(checked为false),则需将下方所有子复选框的状态同步为未选中。第二部分是处理子复选框的点击事件及其对“全选”按钮状态的联动影响。每当用户点击任意一个子复选框时,程序都需要遍历判断所有子复选框是否全部被选中。只有当所有子复选框均处于选中状态时,“全选”按钮才应被设为选中状态;只要有一个子复选框未被选中,“全选”按钮即恢复为未选中状态。建议结合下方带有详细注释的代码进行理解分析。
以上就是本文的全部内容,希望这些代码和解析能对读者的学习有所帮助,同时也欢迎大家继续支持本站。
AOS.js 动画不触发怎么办?排查 DOM 加载与移动端兼容问题
2026-11-05 17:02:26
sigma.js 怎么实现节点点击、拖拽与悬停提示交互
2026-11-05 15:03:27
Matter.js 与 PixiJS/Three.js 集成:分离物理计算与渲染
2026-11-05 13:43:48
主流JS弹幕库选型指南:Danmaku.js等库的功能与体积对比
2026-11-05 09:28:19
JavaScript点击事件监听与交互效果实例
2026-11-05 09:10:19
