当前位置:首页 > 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实现tab选项卡切换

js实现tab选项卡切换

实现Tab选项卡切换的JavaScript方法 使用纯JavaScript实现Tab切换功能,可以通过监听点击事件动态切换内容显示状态。以下是两种常见实现方式: 基础DOM操作实现 /…

js jquery

js jquery

jQuery 简介 jQuery 是一个快速、简洁的 JavaScript 库,简化了 HTML 文档遍历、事件处理、动画设计和 Ajax 交互。它兼容多种浏览器,提供易于使用的 API,使开发者能够…

js钟表实现

js钟表实现

实现JavaScript钟表的基本方法 创建一个简单的JavaScript钟表可以通过以下步骤完成,涵盖数字和模拟两种形式。 数字钟表实现 HTML结构只需一个显示时间的容器: <div i…

vue实现js休眠

vue实现js休眠

实现 JavaScript 休眠的方法 在 Vue 中实现 JavaScript 休眠(延迟执行)可以通过以下方式实现。由于 JavaScript 本身没有内置的 sleep 函数,通常使用 Prom…

js计算器的实现

js计算器的实现

实现基础结构 HTML部分需要创建计算器的基本框架,包含显示区域和按钮。使用<div>容器包裹整个计算器,内部设置一个显示屏和多个按钮。 <div class="calculato…

js实现弹框

js实现弹框

使用 alert 实现简单弹框 JavaScript 的 alert 方法可以直接显示一个简单的弹框,内容为纯文本: alert("这是一个简单的弹框"); 使用 confirm 实现确认弹框…