全选全不选案例

全选框案例:

先看效果图:

在这里插入图片描述

核心思路如下:

  1. 全选点击事件: 单选checked状态跟随全选
  2. 单选for循环点击事件: 默认flag = ture;只要有一个按钮没选中,flag = false 即 全选框就不勾选

scirpt核心代码如下:

//全选点击事件,单选跟随全选
        allCheck.onclick = function () {
            for (var i = 0; i < oneChecks.length; i++) {
                oneChecks[i].checked = this.checked;
            }
        }
        //单选按钮循环注册点击事件
        for (var i = 0; i < oneChecks.length; i++) {
            oneChecks[i].onclick = function () {
                //
                var flag = true;
                //遍历按钮,只要有一个按钮没选中,全选框就不勾选
                for (var i = 0; i < oneChecks.length; i++) {
                    if (!oneChecks[i].checked) {
                        flag = false;
                    }
                }
                //
                allCheck.checked = flag;
            }
        }

全部代码如下:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style>
        * {
            margin: 0;
            padding: 0;
        }
        table {
            margin-top: 100px;
        }
        table thead {
            background-color: cornflowerblue;
        }
        table tbody {
            background-color: whitesmoke;
            cursor: pointer;
        }
        .bg {
            background-color: #a7cbff;
        }
    </style>
</head>
<body>
    <table align="center" border="0" width="300px" height="200px" cellspacing="1">
        <thead align="center">
            <tr>
                <td><label><input id="a_All" class="checkAll" type="checkbox"/>全选</label></td>
                <th>手机款式</th>
                <th>单价</th>
            </tr>
        </thead>
        <tbody align="center">
            <tr>
                <td><input class="checkOne" type="checkbox" name="phone"></td>
                <td>iPhone 8</td>
                <td>¥ 2000</td>
            </tr>
            <tr>
                <td><input class="checkOne" type="checkbox" name="phone"></td>
                <td>iPhone X</td>
                <td>¥ 4000</td>
            </tr>
            <tr>
                <td><input class="checkOne" type="checkbox" name="phone"></td>
                <td>iPhone 11</td>
                <td>¥ 5000</td>
            </tr>
            <tr>
                <td><input class="checkOne" type="checkbox" name="phone"></td>
                <td>iPhone 12</td>
                <td>¥ 6000</td>
            </tr>
        </tbody>
    </table>
    <script>
        var allCheck = document.getElementById('a_All');
        var oneChecks = document.querySelector('tbody').querySelectorAll('input');
        var trs = document.querySelector('tbody').querySelectorAll('tr');


        //全选点击事件,单选跟随全选
        allCheck.onclick = function () {
            for (var i = 0; i < oneChecks.length; i++) {
                oneChecks[i].checked = this.checked;
            }
        }
        //单选按钮循环注册点击事件
        for (var i = 0; i < oneChecks.length; i++) {
            oneChecks[i].onclick = function () {
                //
                var flag = true;
                //遍历按钮,只要有一个按钮没选中,全选框就不勾选
                for (var i = 0; i < oneChecks.length; i++) {
                    if (!oneChecks[i].checked) {
                        flag = false;
                    }
                }
                //
                allCheck.checked = flag;
            }
        }
        //循环注册鼠标事件 划过变色
        for (var i = 0; i < trs.length; i++) {
            trs[i].onmouseover = function () {
                this.className = 'bg';
            }
            trs[i].onmouseout = function () {
                this.className = '';
            }
        }
    </script>
</body>
</html>
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值