JS练手小作业:全选与反选

思路

主要是想做一个全选框,它能把所有其他的框都勾上,而再次点击,就可以把其它框取消全选,当其它所有的框勾选之后,这个全选框也会自动给勾上

代码

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>
    <table>
        <thead>
            <tr>
                <td><input type="checkbox" id="all"></td>
                <td>全选</td>
            </tr>
        </thead>
        <tbody>
            <tr>
                <td><input type="checkbox"></td>
                <td>一般选择</td>
            </tr>
            <tr>
                <td><input type="checkbox"></td>
                <td>一般选择</td>
            </tr>
            <tr>
                <td><input type="checkbox"></td>
                <td>一般选择</td>
            </tr>
            <tr>
                <td><input type="checkbox"></td>
                <td>一般选择</td>
            </tr>
        </tbody>

    </table>
    <script>
        var all_check = document.querySelector('#all');
        var checks = document.querySelector('tbody').querySelectorAll('input');
        // console.log(checks);
        all_check.onclick = function() {
            for (var i = 0; i < checks.length; i++) {
                checks[i].checked = this.checked;
            }
        }
        for (var i = 0; i < checks.length; i++) {
            checks[i].onclick = function() {
            //每一个一般选择框在点击时都会做一次判断,
            //判断的内容是:是否每一个一般选择框都勾上了
                var flag = true;
                for (var i = 0; i < checks.length; i++) {
                    if (checks[i].checked != flag) {
                        flag = false;
                        break;
                    }
                }
                all_check.checked = flag;
            }
        }
    </script>
</body>

</html>

一点感想

以前学html的时候觉得表格的tbody,thead这些有点多余,大不了可以用不同的类名加以区分,但是,在学习JS的时候,要想快速地获取到元素,这种方法还是比较易于操作的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值