当前位置:首页 > JavaScript

js实现全选和全不选

2026-02-28 20:46:27JavaScript

实现全选和全不选功能

通过JavaScript实现全选和全不选功能,通常需要操作复选框(checkbox)的checked属性。以下是具体实现方法:

HTML结构示例

js实现全选和全不选

<input type="checkbox" id="selectAll"> 全选/全不选
<div id="checkboxGroup">
  <input type="checkbox" class="item"> 选项1
  <input type="checkbox" class="item"> 选项2
  <input type="checkbox" class="item"> 选项3
</div>

基础实现方式

全选控制逻辑

js实现全选和全不选

document.getElementById('selectAll').addEventListener('change', function() {
  const items = document.querySelectorAll('.item');
  items.forEach(item => {
    item.checked = this.checked;
  });
});

反向联动控制 当手动取消某个子选项时,自动取消全选状态:

const items = document.querySelectorAll('.item');
items.forEach(item => {
  item.addEventListener('change', function() {
    const allChecked = [...items].every(i => i.checked);
    document.getElementById('selectAll').checked = allChecked;
  });
});

进阶实现方案

封装为可复用函数

function setupCheckboxGroup(selectAllId, itemClass) {
  const master = document.getElementById(selectAllId);
  const slaves = document.querySelectorAll(`.${itemClass}`);

  master.addEventListener('change', () => {
    slaves.forEach(slave => slave.checked = master.checked);
  });

  slaves.forEach(slave => {
    slave.addEventListener('change', () => {
      master.checked = [...slaves].every(s => s.checked);
    });
  });
}

// 调用示例
setupCheckboxGroup('selectAll', 'item');

注意事项

  • 确保DOM加载完成后再执行脚本,可以将代码放在DOMContentLoaded事件中或置于<body>末尾
  • 对于动态添加的复选框,需要使用事件委托或重新绑定事件
  • 考虑添加中间状态(部分选中)时,可修改全选框为indeterminate状态:
    master.indeterminate = checkedCount > 0 && checkedCount < slaves.length;

完整示例代码

<!DOCTYPE html>
<html>
<body>
  <input type="checkbox" id="selectAll"> 全选/全不选
  <div id="checkboxGroup">
    <input type="checkbox" class="item"> 选项1
    <input type="checkbox" class="item"> 选项2
    <input type="checkbox" class="item"> 选项3
  </div>

  <script>
    document.addEventListener('DOMContentLoaded', function() {
      const master = document.getElementById('selectAll');
      const slaves = document.querySelectorAll('.item');

      master.addEventListener('change', function() {
        slaves.forEach(slave => {
          slave.checked = this.checked;
        });
      });

      slaves.forEach(slave => {
        slave.addEventListener('change', function() {
          const allChecked = [...slaves].every(s => s.checked);
          master.checked = allChecked;
        });
      });
    });
  </script>
</body>
</html>

标签: 全选不选
分享给朋友:

相关文章

vue实现选择全选

vue实现选择全选

Vue 实现全选功能 全选功能通常用于表格或列表,允许用户一键选中所有选项。以下是基于 Vue 的实现方法: 基础实现方式 <template> <div> &l…

vue表单全选实现

vue表单全选实现

实现 Vue 表单全选功能 在 Vue 中实现表单全选功能可以通过以下方法完成: 数据绑定与事件处理 创建全选复选框和数据列表复选框,使用 v-model 双向绑定选中状态,监听全选复选框的 ch…

vue实现全选删除

vue实现全选删除

Vue实现全选删除功能 在Vue中实现全选删除功能需要结合复选框状态管理和数组操作。以下是具体实现方法: 数据准备 定义需要渲染的列表数据和全选状态: data() { return {…

vue实现表单全选

vue实现表单全选

Vue 实现表单全选功能 在 Vue 中实现表单全选功能,可以通过绑定数据和事件来实现。以下是具体实现方法: 使用 v-model 绑定数据 在 Vue 模板中,使用 v-model 绑定一个数组来…

vue radio如何实现全选

vue radio如何实现全选

实现 Vue Radio 全选功能 在 Vue 中实现 Radio 全选功能,可以通过绑定动态数据和计算属性来实现。以下是一种常见的方法: 数据绑定与事件处理 <template>…

vue实现全选不全选

vue实现全选不全选

实现全选/全不选功能 在Vue中实现全选/全不选功能通常涉及以下步骤: 数据绑定 创建响应式数据存储选中状态和选项列表: data() { return { items: […