当前位置:首页 > 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 中实现全选功能通常涉及以下关键步骤: 数据绑定与状态管理 使用 v-model 绑定全选复选框的状态,并通过计算属性或方法管理子项的选中状态。例如: data(…

vue实现点击全选

vue实现点击全选

Vue 实现点击全选功能 在 Vue 中实现点击全选功能可以通过多种方式完成,以下是几种常见的实现方法: 使用 v-model 和计算属性 通过计算属性来实现全选和反选功能,适用于复选框列表…

vue中实现全选

vue中实现全选

Vue 中实现全选功能 在 Vue 中实现全选功能可以通过以下方法完成,主要涉及表单复选框的操作和状态管理。 方法一:使用 v-model 绑定数组 准备数据 定义一组选项和一个数组用于存储选中的…

vue表单全选实现

vue表单全选实现

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

vue 实现单选全选

vue 实现单选全选

实现单选和全选功能 在Vue中实现单选和全选功能,可以通过v-model指令绑定数据,结合计算属性和方法来实现交互逻辑。以下是一个完整的实现方案。 基础数据结构 定义列表数据,每个数据项包含选中状…

vue实现多选全选

vue实现多选全选

Vue 实现多选全选功能 数据准备 在 Vue 中实现多选全选功能,需要准备两个关键数据:items(待选项列表)和selectedItems(已选项列表)。items通常从后端 API 获取或前端静…