当前位置: 首页 > news >正文

Web前端:全选框的使用

 整体代码:

<div><input type="checkbox" id="check-all" /><label for="check-all">全选</label></div><div><input type="checkbox" class="checkbox-item" /><label >选项1</label><input type="checkbox" class="checkbox-item" /><label >选项2</label><input type="checkbox" class="checkbox-item" /><label >选项3</label></div><script>document.addEventListener('DOMContentLoaded', function () {var checkAll = document.getElementById('check-all');var checkboxes = document.querySelectorAll('.checkbox-item')function updateCheckAll() {var checkedCount = 0;checkboxes.forEach(function (checkbox) {if (checkbox.checked) checkedCount++});checkAll.checked = checkedCount === checkboxes.length;checkAll.indeterminate = checkedCount > 0 && checkedCount < checkboxes.length;}checkAll.addEventListener('change', function () {checkboxes.forEach(function (checkbox) {checkbox.checked = checkAll.checked;});checkAll.indeterminate = false;});checkboxes.forEach(function (checkbox) {checkbox.addEventListener('change', updateCheckAll);})})</script>

1. HTML结构部分

<div><input type="checkbox" id="check-all" /> <!-- 全选复选框 --><label for="check-all">全选</label> <!-- 全选标签 -->
</div><div><input type="checkbox" class="checkbox-item" /> <!-- 选项1 --><label>选项1</label><input type="checkbox" class="checkbox-item" /> <!-- 选项2 --><label>选项2</label><input type="checkbox" class="checkbox-item" /> <!-- 选项3 --><label>选项3</label>
</div>
  • <div>:分组容器

  • <input type="checkbox">:复选框元素

  • id="check-all":全选按钮的唯一标识

  • class="checkbox-item":三个选项的共同类名(用于批量选择)

  • <label>:点击文字也能操作复选框(for属性需匹配id

2. JavaScript核心逻辑 

document.addEventListener('DOMContentLoaded', function () {// 等待页面加载完成再执行代码
});
  • addEventListener:向指定的元素添加事件监听器

  • 重要:防止在DOM元素未加载前操作它们

3. 获取DOM元素

var checkAll = document.getElementById('check-all'); // 获取全选按钮
var checkboxes = document.querySelectorAll('.checkbox-item'); // 获取所有选项
  • getElementById():通过id获取单个元素

  • querySelectorAll():通过CSS选择器获取元素集合(返回NodeList)

  • 变量作用

    • checkAll:控制全选的复选框

    • checkboxes:包含三个选项的数组

4. 更新全选状态函数

function updateCheckAll() {var checkedCount = 0; // 计数器:已选中的选项数// 遍历所有选项checkboxes.forEach(function (checkbox) {if (checkbox.checked) checkedCount++; // 如果选中则计数+1});// 设置全选框状态:checkAll.checked = (checkedCount === checkboxes.length); // 全部选中时打勾checkAll.indeterminate = (checkedCount > 0 && checkedCount < checkboxes.length); // 部分选中时显示"-"状态
}
  • 核心逻辑

    1. 遍历每个选项,统计被选中的数量

    2. 三种状态处理:

      • 全选:选中数 = 总数 → checked=true

      • 全不选:选中数 = 0 → checked=false

      • 部分选:0 < 选中数 < 总数 → indeterminate=true(显示横线"-"状态)

 5. 全选按钮事

checkAll.addEventListener('change', function () {// 当全选框状态变化时checkboxes.forEach(function (checkbox) {checkbox.checked = checkAll.checked; // 所有选项同步全选框状态});checkAll.indeterminate = false; // 强制取消"-"状态(全选/全不选时)
});
  • 用户操作:点击"全选"复选框时触发

  • 执行动作

    1. 遍历所有选项,设置为全选框的当前状态

    2. 重置indeterminate属性(全选/全不选时不需要"-"状态)

6. 单个选项事件绑定 

checkboxes.forEach(function (checkbox) {checkbox.addEventListener('change', updateCheckAll); // 选项变化时更新全选框状态
});
  • 循环绑定:为每个选项添加change事件监听

  • 事件响应:当任意选项状态改变时,调用updateCheckAll()重新计算全选框状态

http://www.dtcms.com/a/266937.html

相关文章:

  • Abase和ByteKV存储方案对比
  • 【C#】入门
  • tmux 左下角会话名显示不全的解决方法
  • SpringBoot-规划多模块目录结构
  • 项目介绍:Awesome System Prompts
  • 免费PDF处理软件,支持多种操作
  • 开源项目XYZ.ESB:数据库到数据库(DB->DB)集成
  • 系统架构师
  • Class5多层感知机的从零开始实现
  • Linux awk 命令
  • 浅谈 webshell 构造之如何获取恶意函数
  • chrome插件合集
  • 4 位量化 + FP8 混合精度:ERNIE-4.5-0.3B-Paddle本地部署,重新定义端侧推理效率
  • 【LUT技术专题】CLUT代码讲解
  • 写一个Ununtu C++ 程序,调用ffmpeg API, 来判断一个数字电影的视频文件mxf 是不是Jpeg2000?
  • MSPM0G3507学习笔记(一) 重置版:适配逐飞库的ti板环境配置
  • 服装零售企业跨区域运营难题破解方案
  • 深度学习笔记29-RNN实现阿尔茨海默病诊断(Pytorch)
  • 25年Java后端社招技术场景题!
  • MyDockFinder 绿色便携版 | 一键仿Mac桌面,非常简单
  • 应用分发平台的重要性:构建、扩展和管理您的移动应用
  • VR 火化设备仿真系统具备哪些优势?​
  • MySQL 八股文【持续更新ing】
  • 机器学习路径规划中的 net 和 netlist 分别是什么?
  • 《推客分销系统架构设计:从零搭建高并发社交裂变引擎》
  • linux---------------进程信号(下)
  • 将制作的网站部署在公网
  • 电机转速控制系统算法分析与设计
  • 同步(Synchronization)和互斥(Mutual Exclusion)关系
  • 基于Apache MINA SSHD配置及应用