欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

DOM之全选反选

程序员文章站 2022-05-31 10:54:32
...

效果图如下:
DOM之全选反选
完整代码:

<!DOCTYPE html>
<html>

<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style>
        table {
            width: 800px;
            margin: 100px auto;
            padding: 0;
            font-size: 14px;
        }
        
        thead tr {
            height: 32px;
            text-align: center;
            background-color: rgba(135, 207, 235, 0.514);
        }
        
        tbody tr {
            height: 30px;
            text-align: center;
            background-color: rgba(199, 223, 233, 0.301);
        }
        
        td {
            border-bottom: 1px solid #ccc;
            font-size: 12px;
        }
    </style>

</head>

<body>
    <div class="wrap">
        <table>
            <thead id="thead">
                <tr>
                    <th>
                        <input type="checkbox" id="headipt">
                    </th>
                    <th>点菜</th>
                    <th>顾客</th>
                </tr>
            </thead>
            <tbody id="tbody">
                <tr>
                    <td>
                        <input type="checkbox">
                    </td>
                    <td>糖醋里脊</td>
                    <td>张三</td>
                </tr>
                <tr>
                    <td>
                        <input type="checkbox">
                    </td>
                    <td>甜不辣</td>
                    <td>李四</td>
                </tr>
                <tr>
                    <td>
                        <input type="checkbox">
                    </td>
                    <td>蔬菜大拼</td>
                    <td>王五</td>
                </tr>
                <tr>
                    <td>
                        <input type="checkbox">
                    </td>
                    <td>蔬菜大拼</td>
                    <td>王五</td>
                </tr>
                <tr>
                    <td>
                        <input type="checkbox">
                    </td>
                    <td>蔬菜大拼</td>
                    <td>王五</td>
                </tr>
                <tr>
                    <td>
                        <input type="checkbox">
                    </td>
                    <td>蔬菜大拼</td>
                    <td>王五</td>
                </tr>
            </tbody>
        </table>
    </div>
    <script>
        // 1.获取元素
        var j_cbAll = document.getElementById('headipt'); //全选按钮
        var j_tbs = document.getElementById('tbody').getElementsByTagName('input'); //下面所有的复选框
        //2.注册事件
        j_cbAll.onclick = function() {
                //this.checked  他可以得到当前复选框的选中状态,如果是true,就是选中,如果是false,就是未选中
                console.log(this.checked);
                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() {
                //flag控制全选按钮是否被选中
                var flag = true;
                //每次点击下面的复选框都要循环检查下面的按钮是否被选中
                for (var j = 0; j < j_tbs.length; j++) {
                    if (!j_tbs[j].checked) {
                        flag = false;
                        break; //退出for循环,可以提高执行效率,只要有一个选中,其他就不用再判断了
                    }
                }
                j_cbAll.checked = flag;
            }
        }
    </script>
</body>

</html>