当前位置:首页 > JavaScript

js实现全选反选

2026-01-30 10:35:30JavaScript

实现全选和反选功能

全选和反选是表单操作中常见的功能,可以通过JavaScript轻松实现。以下是两种常见的实现方式:

HTML结构示例

<input type="checkbox" id="selectAll">全选
<div id="checkboxGroup">
  <input type="checkbox" name="item" value="1">选项1
  <input type="checkbox" name="item" value="2">选项2
  <input type="checkbox" name="item" value="3">选项3
</div>
<button id="reverseSelect">反选</button>

方法一:基础实现

// 获取DOM元素
const selectAll = document.getElementById('selectAll');
const checkboxes = document.querySelectorAll('#checkboxGroup input[type="checkbox"]');
const reverseBtn = document.getElementById('reverseSelect');

// 全选功能
selectAll.addEventListener('change', function() {
  checkboxes.forEach(checkbox => {
    checkbox.checked = this.checked;
  });
});

// 反选功能
reverseBtn.addEventListener('click', function() {
  checkboxes.forEach(checkbox => {
    checkbox.checked = !checkbox.checked;
  });
  updateSelectAllStatus();
});

// 更新全选状态
function updateSelectAllStatus() {
  const allChecked = Array.from(checkboxes).every(checkbox => checkbox.checked);
  selectAll.checked = allChecked;
}

// 监听单个复选框变化
checkboxes.forEach(checkbox => {
  checkbox.addEventListener('change', updateSelectAllStatus);
});

方法二:使用事件委托优化

js实现全选反选

document.addEventListener('DOMContentLoaded', function() {
  const container = document.getElementById('checkboxGroup');
  const selectAll = document.getElementById('selectAll');
  const reverseBtn = document.getElementById('reverseSelect');

  // 事件委托处理复选框点击
  container.addEventListener('change', function(e) {
    if(e.target.type === 'checkbox') {
      const checkboxes = container.querySelectorAll('input[type="checkbox"]');
      selectAll.checked = Array.from(checkboxes).every(cb => cb.checked);
    }
  });

  // 全选功能
  selectAll.addEventListener('change', function() {
    const checkboxes = container.querySelectorAll('input[type="checkbox"]');
    checkboxes.forEach(checkbox => {
      checkbox.checked = this.checked;
    });
  });

  // 反选功能
  reverseBtn.addEventListener('click', function() {
    const checkboxes = container.querySelectorAll('input[type="checkbox"]');
    checkboxes.forEach(checkbox => {
      checkbox.checked = !checkbox.checked;
    });
    selectAll.checked = Array.from(checkboxes).every(cb => cb.checked);
  });
});

注意事项

  1. 确保DOM加载完成后再执行JavaScript代码,可以将代码放在DOMContentLoaded事件中或放在body末尾

  2. 使用事件委托可以减少事件监听器的数量,提高性能

    js实现全选反选

  3. 全选复选框的状态应该与所有子复选框的状态同步

  4. 反选操作后需要更新全选复选框的状态

  5. 考虑添加防抖或节流处理,如果复选框数量很多

这些实现方式适用于大多数Web应用场景,可以根据实际需求进行调整和扩展。

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

相关文章

js 实现vue

js 实现vue

实现 Vue 的核心功能 在 JavaScript 中实现 Vue 的核心功能需要模拟数据绑定、虚拟 DOM 和响应式系统。以下是一个简化版的实现思路: 响应式系统 通过 Object.defin…

vue实现全选下载

vue实现全选下载

Vue实现全选下载功能 全选下载功能通常涉及前端文件列表的多选操作和批量下载逻辑。以下是基于Vue的实现方案: 数据准备与渲染 在Vue组件中定义文件列表数据和选中状态: data() { r…

js实现拖拽

js实现拖拽

实现拖拽的基本步骤 使用JavaScript实现拖拽功能需要监听鼠标事件,包括mousedown、mousemove和mouseup。以下是实现的基本逻辑: const draggableEleme…

css3结合js制作

css3结合js制作

CSS3 结合 JavaScript 制作动态效果 CSS3 和 JavaScript 结合可以实现丰富的动态效果,包括动画、交互和响应式设计。以下是几种常见的实现方式: CSS3 动画与 Java…

vue全选实现

vue全选实现

Vue 全选实现方法 使用 v-model 绑定复选框 在 Vue 中,可以通过 v-model 绑定复选框的状态。全选功能可以通过一个主复选框控制多个子复选框的状态。 <templa…

js实现

js实现

实现 JavaScript 功能的方法 在 JavaScript 中实现特定功能通常涉及多个步骤。以下是常见的实现方法: 基础语法和变量声明 使用 let 或 const 声明变量: let…