原生JS——checkbox操作技巧

  1. 新增checkbox
<input type="checkbox" id="allCheck" class="check" value="all">
<lable for="allCheck">全選</lable>

2.根據(jù)type="checkbox"選中所有checkbox

const checkList = document.querySelectorAll('input[type="checkbox"]');

3.修改checkbox選中狀態(tài)

// 選中
document.querySelector('input[type="checkbox"]').checked = true;
// 取消選中
document.querySelector('input[type="checkbox"]').checked = false;

4.獲取checkbox的value

const curValue = document.querySelector('input[type="checkbox"]').value;

5.一個(gè)簡(jiǎn)單的表格全選框功能實(shí)現(xiàn)

// html
<form id="form" action="" method="get" target="targetIfr">
        <table>
            <thead>
                <tr>
                    <th>姓名</th>
                    <th>年齡</th>
                    <th>分?jǐn)?shù)</th>
                    <th>
                        <input type="checkbox" id="allCheck" class="check" value="all">
                        <lable for="allCheck">全選</lable>
                    </th>
                </tr>
            </thead>
            <tbody>
                <tr>
                    <td>Tom</td>
                    <td>12</td>
                    <td>100</td>
                    <td><input type="checkbox" class="check checkChild" value="Tom" name="name"></td>
                </tr>
                <tr>
                    <td>Andy</td>
                    <td>12</td>
                    <td>89</td>
                    <td><input type="checkbox" class="check checkChild" value="Tom" name="name"></td>
                </tr>
                <tr>
                    <td>Candy</td>
                    <td>11</td>
                    <td>93</td>
                    <td><input type="checkbox" class="check checkChild" value="Tom" name="name"></td>
                </tr>
            </tbody>
        </table>
        <input type="submit" value="提交">
    </form>
// js
let allChecked = false;
    const allCheckBtn = document.getElementById("allCheck");
    allCheckBtn.onclick = function() {
        // const checkList = document.getElementsByClassName('check');
        const checkList = document.querySelectorAll('input[type="checkbox"]');
        for (let check of checkList) {
            check.checked = !allChecked;
        }
        allChecked = !allChecked;
    }

    const form = document.getElementById("form");
    form.addEventListener('click', function(e){

       if(e.target.classList.contains('checkChild')) {
        console.log(e.target.classList)
            const checkChildList = document.getElementsByClassName('checkChild');
            const allCheckChildNum = checkChildList.length;
            let checkedNum = 0;
            for(let checkChild of checkChildList) {
                if (checkChild.checked) {
                    console.log(checkChild.value);
                    checkedNum++;
                }
            }
            if (checkedNum === allCheckChildNum) {
                allCheckBtn.checked = true;
                allChecked = true;
            } 
            else {
                allCheckBtn.checked = false;
                allChecked = false;
            }
                
       }
    }, false);

注:
1)通過document.querySelectorAll()獲得的NodeList類型,要使用for of進(jìn)行遍歷,使用for in會(huì)訪問到隊(duì)形自定義的properties
2)classList對(duì)應(yīng)的DOMTokenList類型使用contains檢查是否包含特定值

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 文檔對(duì)象模型 DOM DOM 是 JavaScript 操作?頁的接口,全稱為“文檔對(duì)象模型”(Document ...
    yuhuan121閱讀 410評(píng)論 0 0
  • 基本介紹 文檔對(duì)象模型 (DOM) 是HTML和XML文檔的編程接口。它給文檔(結(jié)構(gòu)樹)提供了一個(gè)結(jié)構(gòu)化的表述并且...
    草鞋弟閱讀 589評(píng)論 0 0
  • 基本概念 DOM DOM 是 JavaScript 操作網(wǎng)頁的接口,全稱為“文檔對(duì)象模型”(Document Ob...
    許先生__閱讀 935評(píng)論 0 1
  • 1.dom對(duì)象的innerText和innerHTML有什么區(qū)別? innerText:得到dom對(duì)象(元素)內(nèi)部...
    IT男的成長(zhǎng)記錄閱讀 370評(píng)論 0 0
  • 小巷的喧鬧 馬路邊的鳴笛 總是打破這夜晚的寧靜 滅了燈的房間 一切是那么的黑暗 慢慢打開床邊的臺(tái)燈 覺得是那么溫...
    陌墨_02e4閱讀 411評(píng)論 0 1

友情鏈接更多精彩內(nèi)容