首先实现全选功能,通过监听“全选”复选框的点击事件将其状态同步给所有子复选框;接着添加反选按钮,点击时对每个子复选框的状态取反;最后当用户手动选择部分项时,动态检测是否全部选中,自动更新“全选”复选框状态。

在网页开发中,复选框的全选和反选功能非常常见,比如在邮件系统或后台管理列表中。使用 JavaScript 可以轻松实现这一交互效果。下面介绍如何编写一个简单高效的 JS 脚本实现全选与反选功能。
1. 页面结构:复选框基本布局
首先准备 HTML 结构,包含一个“全选”主复选框和多个子复选框:
全选
选项1
选项2
选项3
选项4
2. 实现全选功能
通过监听“全选”复选框的点击事件,将其状态同步给所有子复选框:
document.getElementById('checkAll').onclick = function() {
const items = document.getElementsByClassName('item');
for (let i = 0; i < items.length; i++) {
items[i].checked = this.checked;
}
};
说明:当“全选”被勾选时,所有 class 为 item 的复选框都被设为选中;取消勾选则全部清除。
3. 实现反选功能
添加一个反选按钮,点击时对每个子复选框的状态取反:
function toggleSelect() {
const items = document.getElementsByClassName('item');
for (let i = 0; i < items.length; i++) {
items[i].checked = !items[i].checked;
}
}
HTML 中加入反选按钮:
4. 增强体验:自动更新全选状态
当用户手动选择部分复选框时,应动态更新“全选”框的状态(全部选中时自动勾上,否则不勾):
const items = document.getElementsByClassName('item');
for (let i = 0; i < items.length; i++) {
items[i].onclick = function() {
const allChecked = Array.from(items).every(el => el.checked);
document.getElementById('checkAll').checked = allChecked;
};
}
这里使用 Array.from() 将类数组转为数组,并用 every() 判断是否全部选中。
基本上就这些。通过简单的 DOM 操作和事件绑定,就能实现完整的全选、反选和状态同步功能。这个脚本兼容性好,无需依赖框架,适合大多数项目直接使用。










