DOM:全选/全不选案例

<table>
        <tr>
            <th class="allCheck">
                <input type="checkbox" name="" id="checkAll"> <span class="all">全选</span>
            </th>
            <th>商品</th>
            <th>商家</th>
            <th>价格</th>
        </tr>
        <tr>
            <td>
                <input type="checkbox" name="check" class="ck">
            </td>
            <td>小米手机</td>
            <td>小米</td>
            <td>¥1999</td>
        </tr>
        <tr>
            <td>
                <input type="checkbox" name="check" class="ck">
            </td>
            <td>小米净水器</td>
            <td>小米</td>
            <td>¥4999</td>
        </tr>
        <tr>
            <td>
                <input type="checkbox" name="check" class="ck">
            </td>
            <td>小米电视</td>
            <td>小米</td>
            <td>¥5999</td>
        </tr>
</table>

<script>
        let checkAll = document.querySelector('#checkAll')
        let text = document.querySelector('.all')
        let cks = document.querySelectorAll('.ck')
        // 单击全选
        checkAll.addEventListener('click', function () {
            // 让每个小复选框的选中状态和全选的选中状态一样
            for (let i = 0; i < cks.length; i++) {
                cks[i].checked = checkAll.checked
            }
            // 修改文字:全选变取消,取消变全选
            if (checkAll.checked === true) {
                text.innerHTML = '取消'
            } else {
                text.innerHTML = '全选'
            }
        })

        // 为每个小复选框添加单击事件
        for (let i = 0; i < cks.length; i++) {
            cks[i].addEventListener('click', function () {
                // 每点击一个小复选框,都要看看其他小复选框的选中状态,只要有一个小复选框没被选中,全选按钮也不被选中
                for (let j = 0; j < cks.length; j++) {
                    // 如果没有进入判断,说明小复选框是被选中的状态
                    if (cks[j].checked === false) {
                        checkAll.checked = false
                        text.innerHTML = '全选'
              // 退出函数,if执行完后,不让后面的代码执行,表示所有小的复选框已被勾选了
                        return
                    }
                    checkAll.checked = true
                    text.innerHTML = '取消'
                }
            })
        }
</script>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值