当前位置:首页 > 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);
});

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

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. 使用事件委托可以减少事件监听器的数量,提高性能

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

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

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

    js实现全选反选

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

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

相关文章

js实现轮播图

js实现轮播图

基础轮播图实现 使用HTML、CSS和JavaScript实现一个简单的自动轮播图。HTML结构包含一个容器和多个图片项。 <div class="slider"> <div…

js实现全选

js实现全选

实现全选功能的方法 在JavaScript中实现全选功能通常涉及监听全选复选框的点击事件,并根据其状态控制其他复选框的选中状态。以下是几种常见的实现方式: 基础DOM操作实现 通过获取所有目标复选框…

js 进度条的实现

js 进度条的实现

使用 HTML 和 CSS 创建基础进度条 HTML 结构可以简单使用一个 div 元素作为容器,内部嵌套另一个 div 表示进度: <div class="progress-containe…

js实现tab选项卡切换

js实现tab选项卡切换

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

js实现百叶窗

js实现百叶窗

使用CSS和JavaScript实现百叶窗效果 通过CSS动画和JavaScript事件监听可以实现百叶窗效果。核心思路是将内容区域分割为多个条状元素,通过控制它们的展开/折叠状态来模拟百叶窗。…

js实现dh

js实现dh

JavaScript 实现 DH(Diffie-Hellman)密钥交换 Diffie-Hellman(DH)密钥交换是一种安全协议,允许双方在不安全的通信信道上建立一个共享密钥。以下是如何在 Jav…