<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style>
        body {
            font-family: "Microsoft YaHei", serif;
        }

        body, dl, dd, p, h1, h2, h3, h4, h5, h6 {
            margin: 0;
        }

        ol, ul, li {
            margin: 0;
            padding: 0;
            list-style: none;
        }

        img {
            border: none
        }
        #wrap{
            cursor: pointer;
        }
    </style>
</head>
<body>
<div id="wrap">
    <div>
        <input type="checkbox" id="box1"><label for="box1">11</label>
        <input type="checkbox" id="box2"><label for="box2">22</label>
        <input type="checkbox" id="box3"><label for="box3">33</label>
        <input type="checkbox" id="box4"><label for="box4">44</label>
        <input type="checkbox" id="box5"><label for="box5">55</label>
        <input type="checkbox" id="box6"><label for="box6">66</label>
    </div>
    <input type="checkbox" id="box7"><label for="box7">全选</label>
</div>
<script>
// 在原生表单中元素input的里边,checked和disabled在js里边是以布尔值的形式体现的
    let aInp = document.querySelectorAll("#wrap div input");
    let oBtn = document.getElementById("box7");
    let len = aInp.length;
    let num = 0;
    // console.log(aInp[0].disabled); false
    // console.log(aInp[0].checked); false 选中就是true
    // aInp[3].checked = "aaa"; 这样也是可以被选中的,只要后边是个真值就会被翻译为true赋予给他
    
    
    oBtn.onchange = function () {
        if (this.checked) {
            for (let i=0;i<len;i++) {
                aInp[i].checked = true;
            }
        }else{
            for (let i=0;i<len;i++) {
                aInp[i].checked = false;
            }
        }
    };
    for (let i=0;i<len;i++) {
        aInp[i].onchange = function () {
            if (this.checked){
                num++;
            } else{
                num--;
            }
            oBtn.checked = num===len;
        }
    }
</script>
</body>
</html>