【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.pswp.cn/web/75992.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/75992.shtml
英文地址,請注明出處:http://en.pswp.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;還是更高的準確率。這個…