【Web APIs】JavaScript 操作多个元素 ④ ( 表格全选复选框案例 )

文章目录

  • 一、核心要点解析 - 表格全选复选框案例
    • 1、案例需求
    • 2、复选框设置
    • 3、获取 全选复选框 和 普通复选框
    • 4、设置 全选复选框 逻辑
    • 5、设置 普通复选框 逻辑
  • 二、完整代码示例
    • 1、代码示例
    • 2、执行结果






一、核心要点解析 - 表格全选复选框案例




1、案例需求


在表格中 , 设置 多个 checkbox 复选框 表单 , 标题中的 复选框 是 " 全选复选框 " , 普通 表格行 中的 复选框 是 " 普通复选框 " , 受 全选复选框 控制 ;

在这里插入图片描述


2、复选框设置


复选框 是 input 表单 , 将 表单的 type 类型属性 设置为 checkbox , 就是设置了一个复选框 ;

<input type="checkbox" />

在 table 表格 中的 thead 标签元素 , 就是 表格的标题 , 在 该标签下 , 设置 " 全选复选框 " , 该 全选复选框 设置一个 id 属性 , 方便查找到该 元素 ;

        <thead><tr><td><input type="checkbox" id="j_cbAll" /></td><th>姓名</th><th>年龄</th></tr></thead>

table 表格 中 tbody 标签 是 表格 的 内容 , 在 该标签下 , 设置 " 普通复选框 " ; 下面的代码中设置了 3 个普通复选框 ;

        <tbody id="j_tb"><tr><td><input type="checkbox" /></td><td>Tom</td><td>18</td></tr><tr><td><input type="checkbox" /></td><td>Jerry</td><td>12</td></tr><tr><td><input type="checkbox" /></td><td>Trump</td><td>74</td></tr></tbody>

3、获取 全选复选框 和 普通复选框


通过 id 选择器 , 调用 Document 对象的 getElementById , 获取对应 id 的标签 ;

" 全选复选框 " 元素 直接通过 调用 document.getElementById('j_cbAll') 代码即可获得 ;


" 普通复选框 " 元素 都定义在 table 表格的 <tbody id="j_tb"> 标签下 , 先通过 document.getElementById('j_tb') 获取 <tbody id="j_tb"> 标签元素 , 然后 通过 标签选择器 获取 tbody 标签下的 input 标签元素 ;


完整代码如下 :

        // 获取 表格标题 中的 全选按钮复选框 元素 , 只有一个元素var j_cbAll = document.getElementById('j_cbAll');// 获取 标题内容 中的 普通按钮复选框 元素 , 有多个该元素var j_tbs = document.getElementById('j_tb').getElementsByTagName('input');

4、设置 全选复选框 逻辑


全选复选框 逻辑 , 就是 全选 和 取消全选 ;

  • 全选复选框 选中 , 则 普通复选框 全部选中 ;
  • 全选复选框 取消选中 , 则 普通复选框 全部取消选中 ;

就是 为所有的 普通复选框 设置 全选按钮复选框 的 选中状态 , true 是选中 , false 是未选中 ;


代码示例 :

        // 注册 全选 和 取消全选 事件j_cbAll.onclick = function() {// 为所有的 普通复选框 设置 全选按钮复选框 的 选中状态 , true 是选中 , false 是未选中for (var i = 0; i < j_tbs.length; i++) {j_tbs[i].checked = this.checked;}}

5、设置 普通复选框 逻辑


普通复选框 逻辑 如下 : 通过 普通复选框 的操作 , 影响 全选复选框 的 选中状态 ;

  • 全选复选框 选中 : 表格 中的 普通复选框 全部选中 , 表格标题 中的 全选复选框 才会选中 ;
  • 全选复选框 取消选中 : 为所有 普通复选框绑定点击事件 , 每次点击改变选中状态 , 循环检查 所有的 普通复选框 是否 有没有选中的 , 如果有任意一个没有选中 , 则 取消 全选复选框 的 选中状态

代码示例 :

        // 2. 普通复选框 逻辑 : //    全选复选框 选中 : 表格 中的 普通复选框 全部选中 , 表格标题 中的  全选复选框 才会选中 ; //    全选复选框 取消选中 : 为所有 普通复选框绑定点击事件 , 每次点击改变选中状态 , 循环检查 所有的 普通复选框 是否 有没有选中的 , 如果有任意一个没有选中 , 则 取消 全选复选框 的 选中状态for (var i = 0; i < j_tbs.length; i++) {// 为 所有的 普通复选框 循环设置 点击状态j_tbs[i].onclick = function() {// 设置 全选复选框 的 选中状态 , 默认为 truevar flag = true;// 任意一个 普通复选框 点击 , 不管是 选中 还是 取消选中 , 都要检查 当前 是否全部选中 , //      如果 是 则 全选复选框 设置为 选中状态 //      如果 不是 则 全选复选框 设置为 取消选中状态for (var i = 0; i < j_tbs.length; i++) {// 只要有一个 普通复选框 没有选中 , 则 全选复选框 的 选中状态 就设置成了 falseif (!j_tbs[i].checked) {flag = false;break;}}j_cbAll.checked = flag;}}




二、完整代码示例




1、代码示例


完整代码示例 :

<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Inline Style Operation Example</title><style>* {/* 取消默认内外边距样式 */margin: 0;padding: 0;}table {width: 400px;margin: 50px auto;text-align: center;border-collapse: collapse;font-size: 14px;}thead tr {height: 30px;background-color: skyblue;}tbody tr {height: 30px;}tbody td {border-bottom: 1px solid #d7d7d7;font-size: 12px;color: blue;}.bg {background-color: pink;}</style>
</head><body><table><thead><tr><td><input type="checkbox" id="j_cbAll" /></td><th>姓名</th><th>年龄</th></tr></thead><tbody id="j_tb"><tr><td><input type="checkbox" /></td><td>Tom</td><td>18</td></tr><tr><td><input type="checkbox" /></td><td>Jerry</td><td>12</td></tr><tr><td><input type="checkbox" /></td><td>Trump</td><td>74</td></tr></tbody></table><script>// 1.获取元素 获取的是 tbody 里面所有的行var trs = document.querySelector('tbody').querySelectorAll('tr');// 2. 利用循环绑定注册事件for (var i = 0; i < trs.length; i++) {// 3. 鼠标经过事件 onmouseovertrs[i].onmouseover = function() {// console.log(11);this.className = 'bg';}// 4. 鼠标离开事件 onmouseouttrs[i].onmouseout = function() {this.className = '';}}// 获取 表格标题 中的 全选按钮复选框 元素 , 只有一个元素var j_cbAll = document.getElementById('j_cbAll');// 获取 标题内容 中的 普通按钮复选框 元素 , 有多个该元素var j_tbs = document.getElementById('j_tb').getElementsByTagName('input');// 1. 全选 和 取消全选  // 注册 全选 和 取消全选 事件j_cbAll.onclick = function() {// 为所有的 普通复选框 设置 全选按钮复选框 的 选中状态 , true 是选中 , false 是未选中for (var i = 0; i < j_tbs.length; i++) {j_tbs[i].checked = this.checked;}}// 2. 普通复选框 逻辑 : //    全选复选框 选中 : 表格 中的 普通复选框 全部选中 , 表格标题 中的  全选复选框 才会选中 ; //    全选复选框 取消选中 : 为所有 普通复选框绑定点击事件 , 每次点击改变选中状态 , 循环检查 所有的 普通复选框 是否 有没有选中的 , 如果有任意一个没有选中 , 则 取消 全选复选框 的 选中状态for (var i = 0; i < j_tbs.length; i++) {// 为 所有的 普通复选框 循环设置 点击状态j_tbs[i].onclick = function() {// 设置 全选复选框 的 选中状态 , 默认为 truevar flag = true;// 任意一个 普通复选框 点击 , 不管是 选中 还是 取消选中 , 都要检查 当前 是否全部选中 , //      如果 是 则 全选复选框 设置为 选中状态 //      如果 不是 则 全选复选框 设置为 取消选中状态for (var i = 0; i < j_tbs.length; i++) {// 只要有一个 普通复选框 没有选中 , 则 全选复选框 的 选中状态 就设置成了 falseif (!j_tbs[i].checked) {flag = false;break;}}j_cbAll.checked = flag;}}</script>
</body></html>

2、执行结果


静态结果 :

在这里插入图片描述

完整执行过程 :

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/75992.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

OpenAI发布GPT-4.1系列模型——开发者可免费使用

OpenAI刚刚推出GPT-4.1模型家族&#xff0c;包含GPT-4.1、GPT-4.1 Mini和GPT-4.1 Nano三款模型。重点是——现在全部免费开放&#xff01; 虽然技术升级值得关注&#xff0c;但真正具有变革意义的是开发者能通过Cursor、Windsurf和GitHub Copilot等平台立即免费调用这些模型。…

《重构全球贸易体系用户指南》解读

文章目录 背景核心矛盾与理论框架美元的“特里芬难题”核心矛盾目标理论框架 政策工具箱的协同运作机制关税体系的精准打击汇率政策的混合干预安全工具的复合运用 实施路径与全球秩序重构阶段性目标 风险传导与反制效应内部失衡加剧外部反制升级系统性风险 范式突破与理论再思考…

磁盘清理-C盘

0.采用的工具——WizTree&#xff08;一定要以管理员身份运行&#xff09; 没有以管理员身份运行时&#xff1a; 以管理员身份运行&#xff1a;&#xff08;查出很多之前没有查出的文件&#xff09; 1.该死的优酷&#xff01;缓存占我11个G的内存 2.C 盘 Dell 文件夹下的 SARe…

锚定“体验驱动”,锐捷EDN让园区网络“以人为本”

作者 | 曾响铃 文 | 响铃说 传统的网络升级路径&#xff0c;一如巴别塔的建造思路一般——工程师们按技术蓝图逐层堆砌&#xff0c;却常与地面用户的实际需求渐行渐远&#xff0c;从而带来了诸多体验痛点&#xff0c;如手工配置效率低下、关键业务用网无法保障、网络架构趋于…

pid_t

用最简单的方式解释&#xff1a; pid_t 就像是一个"专门用来装进程号码的盒子"。 实际本质&#xff1a; 这个盒子里面装的是整数&#xff08;就像 int&#xff09;但给它贴了专用标签&#xff0c;标明"只能装进程ID" 为什么不用普通int&#xff1a; 就像…

如何处理Python爬取视频时的反爬机制?

文章目录 前言1. IP 封禁2. 验证码3. 用户代理&#xff08;User-Agent&#xff09;检测4. 动态内容加载5. 加密和签名验证 前言 在使用 Python 爬取视频时&#xff0c;网站可能会设置多种反爬机制来阻止爬虫&#xff0c;下面为你介绍一些常见反爬机制及对应的处理方法&#xf…

如何利用GM DC Monitor快速监控一台网络类设备

GM DC Monitor v2.0在网络类设备监控的效率非常高&#xff01; 如果您需要管理运维大量的网络类设备&#xff0c;GM DC Monitor是个不错的选择。 如果您具备一定的采集脚本编写能力&#xff0c;可以在平台的定制属于自己的监控模板&#xff01; 1&#xff09;首先建立数据中…

特殊文件以及日志——特殊文件

一、特殊文件 必要性&#xff1a;可以用于存储多个用户的&#xff1a;用户名、密码。这些有关系的数据都可以用特殊文件来存储&#xff0c;然后作为信息进行传输。 1. 属性文件.properties&#xff08;键值对&#xff09; &#xff08;1&#xff09;特点&#xff1a; 都只能…

基于AD9767高速DAC的DDS信号发生器

DDS信号发生器原理 DDS控制信号发生原理图 DDS主要由相位累加器、相位调制器、波形数据表以及D/A转换器构成。其中相位累加器由N位加法器与N位寄存器构成。每个时钟周期的时钟上升沿,加法器就将频率控制字与累加寄存器输出的相位数据相加,相加的结果又反馈至累加寄存…

镜像端口及观察端口的配置

配好路由器的各个接口的IP PC1ping PC3的IP&#xff0c;在路由器中抓2/0/0端口的包&#xff0c;可观察到无结果 输入observe-port interface g 2/0/0 命令配置观察端口 输入mirror to observe-port both命令 &#xff08;其中both表示接收来去的数据包&#xff0c;inboun…

K8S_ResourceQuota与LimitRange的作用

ResourceQuota 作用详解 资源总量控制&#xff1a;ResourceQuota能对命名空间内的资源使用总量进行限制。在一个Kubernetes集群中&#xff0c;存在多个命名空间&#xff0c;每个命名空间可看作一个独立的工作单元。通过设置ResourceQuota&#xff0c;可以防止某个命名空间过度…

Redis之缓存击穿

Redis之缓存击穿 文章目录 Redis之缓存击穿一、什么是缓存击穿二、缓存击穿常见解决方案1. 互斥锁&#xff08;Mutex Lock&#xff09;2. 永不过期 后台刷新3. 逻辑过期&#xff08;异步更新&#xff09; 三、案例1.基于互斥锁解决缓存击穿2.基于逻辑过期解决缓存击穿 四、注意…

Spring Boot 中使用 Netty

2025/4/15 向 一、什么是Netty Netty 是 Java 中一个非常高性能的网络通信框架&#xff0c;用来开发服务器和客户端程序&#xff0c;主要用于处理 TCP/UDP 的网络连接&#xff0c;比如&#xff1a; 聊天服务 实时推送 高并发网络通信&#xff08;比如游戏、IoT、金融系统&a…

【QT】 QT定时器的使用

QT定时器的使用 1. QTimer介绍&#xff08;1&#xff09;QTimer的使用方法步骤示例代码1&#xff1a;定时器的启动和关闭现象&#xff1a;示例代码2&#xff1a;定时器每隔1s在标签上切换图片现象&#xff1a; (2)实际开发的作用 2.日期 QDate(1)主要方法 3.时间 QTime(1)主要方…

排序算法详细介绍对比及备考建议

文章目录 排序算法对比基本概要 算法逐一介绍1. 冒泡排序&#xff08;Bubble Sort&#xff09;2. 选择排序&#xff08;Selection Sort&#xff09;3. 插入排序&#xff08;Insertion Sort&#xff09;&#x1f31f;&#x1f31f;4. 希尔排序&#xff08;Shell Sort&#xff09…

Docker华为云创建私人镜像仓库

Docker华为云创建私人镜像仓库 在华为云官网的 产品 中搜索 容器镜像服务 &#xff1a; 或者在其他页面的搜索栏中搜索 容器镜像服务 &#xff1a; 进入到页面后&#xff0c;点击 创建组织 &#xff08;华为云的镜像仓库称为组织&#xff09;&#xff1a; 设置组织名字后&…

微信小程序-自定义toast

微信小程序-自定义toast 微信小程序原生的toast最多能显示两行文字。方案1:方案2 微信小程序原生的toast最多能显示两行文字。 有时候并不能满足业务需求。所以我们需要使用第三方或者自定义。 方案1: 第三方vant-toast 微信小程序下载引入第三方vant之后。 在需要使用的页面…

安卓手游逆向

一、环境安装 1.1、安装Java环境 1.2、安装SDK环境 1.3、安装NDK环境 二、APK 2.1、文件结构 2.2、打包流程 2.3、安装流程 应用安装涉及目录: system/app ----->系统自带的应用程序,获得adb root权限才能删除。 data/app ------->用户程序安装的目录,安装…

VSCode Continue 扩展踩坑记录

Trae 是一款很优秀的 AI 开发工具&#xff0c;但目前支持的平台还较少&#xff0c;比如不支持 Win7&#xff0c;不支持 Linux&#xff0c;为了在这些平台上进行开发&#xff0c;我需要寻找一个替代品。经过网上搜索&#xff0c;选择了 VSCode Continue 扩展&#xff0c;但在使…

Elasticsearch:AI 助理 - 从通才到专才

作者&#xff1a;来自 Elastic Thorben Jndling 在 AI 世界中&#xff0c;关于构建针对特定领域定制的大型语言模型&#xff08;large language models - LLM&#xff09;的话题备受关注 —— 不论是为了更好的安全性、上下文理解、专业能力&#xff0c;还是更高的准确率。这个…