全选单选按钮案例

<!DOCTYPE html>

<html>

<head lang="en">

  <meta charset="UTF-8">

  <title></title>

  <style>

    * {

      margin: 0;

      padding: 0;

    }

    table {

      border-collapse: collapse;

      border-spacing: 0;

      border: 1px solid #c0c0c0;

      width: 500px;

      margin: 100px auto;

      text-align: center;

    }

    th {

      background-color: #09c;

      font: bold 16px "微软雅黑";

      color: #fff;

      height: 24px;

    }

    td {

      border: 1px solid #d0d0d0;

      color: #404060;

      padding: 10px;

    }

    .allCheck {

      width: 80px;

    }

  </style>

</head>

<body>

  <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>

    // 1. 获取大复选框

    const checkAll = document.querySelector('#checkAll')

    // 2. 获取所有的小复选框

    const cks = document.querySelectorAll('.ck')

    // 3. 点击大复选框  注册事件

    checkAll.addEventListener('click', function () {

      // 得到当前大复选框的选中状态

      // console.log(checkAll.checked)  // 得到 是 true 或者是 false

      // 4. 遍历所有的小复选框 让小复选框的checked  =  大复选框的 checked

      for (let i = 0; i < cks.length; i++) {

        cks[i].checked = this.checked

      }

    })

    // 5. 小复选框控制大复选框

    for (let i = 0; i < cks.length; i++) {

      // 5.1 给所有的小复选框添加点击事件

      cks[i].addEventListener('click', function () {

        // 判断选中的小复选框个数 是不是等于  总的小复选框个数

        // 一定要写到点击里面,因为每次要获得最新的个数

        // console.log(document.querySelectorAll('.ck:checked').length)

        // console.log(document.querySelectorAll('.ck:checked').length === cks.length)

                                                                                    伪类选择器

        checkAll.checked = document.querySelectorAll('.ck:checked').length === cks.length

        //document.querySelectorAll('.ck:checked').length === cks.length返回true或者false

      })

    }

  </script>

</body>

</html>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值