JavaScript实现复选框全选或全取消操作

这篇文章主要为大家详细介绍了JavaScript实现复选框全选或全取消操作,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

实现思路

1.点击全选/全不选 : 判断上面选择框是true还是false
true:下面列表checked都要是true (全选框是true,选择框列表也要是true)
false:下面列表checked都要是false(全选框是false,选择框列表也要是false)
总结: 点击全选之后,无条件把全选框的checked赋值给每一个选择框列表

2.点击任何一个选择框列表 : 判断所有选择框是否都选中
都选中: 上面全选框checked值修改为true
没有都选中: 上面全选框checked值修改为false

代码

<!DOCTYPE html>
<html>
  <head lang="en">
    <meta charset="UTF-8" />
    <title></title>
    <style>
      * {
        margin: 0;
        padding: 0;
      }

      table {
        border-collapse: collapse;
        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;
      }
    </style>
  </head>
  <body>
    <table>
      <tr>
        <th><input type="checkbox" id="checkAll" />全选/全不选</th>
        <th>菜名</th>
        <th>商家</th>
        <th>价格</th>
      </tr>
      <tr>
        <td>
          <input type="checkbox" class="check" />
        </td>
        <td>红烧肉</td>
        <td>隆江猪脚饭</td>
        <td>¥200</td>
      </tr>
      <tr>
        <td>
          <input type="checkbox" class="check" />
        </td>
        <td>香酥排骨</td>
        <td>隆江猪脚饭</td>
        <td>¥998</td>
      </tr>
      <tr>
        <td>
          <input type="checkbox" class="check" />
        </td>
        <td>北京烤鸭</td>
        <td>隆江猪脚饭</td>
        <td>¥88</td>
      </tr>
    </table>

    <script>
        //1.获取元素
        let checkAll = document.querySelector('#checkAll')
        let checkList = document.querySelectorAll('.check')

        //2.注册事件
        //2.1 点击全选/全不选
        checkAll.onclick = function(){
            // this : 上面全选框
            //3.判断上面全选框是true还是false
            for(let i = 0;i < checkList.length;i++){
                checkList[i].checked = this.checked
            }

            // if( this.checked ){
            //     for( let i = 0;i < checkList.length;i++){
            //         checkList[i].checked = this.checked
            //     }
            // }else{
            //     for( let i = 0;i < checkList.length;i++){
            //         checkList[i].checked = this.checked
            //     }
            // }
        }

        //2.2 点击下方每一个选择框
        for(let i = 0;i<checkList.length;i++){
            checkList[i].onclick = function(){
                //3.检查是否所有选择框全部选中

                //方式二:开关思想
                //(1)声明开关 : 给默认值true,但是不确定是不是对的
                let allCheck = true
                //(2)检查开关
                for( let j = 0;j < checkList.length;j++){
                    if( !checkList[j].checked ){//判断checked是false
                        allCheck = false
                        break
                    }
                }
                console.log(allCheck)
                checkAll.checked = allCheck
            }
        }

        for(let i = 0;i<checkList.length;i++){
            checkList[i].onclick = function(){
                //3.检查是否所有选择框全部选中

                //方式一:累加思想
                //通过累加方式计算所有选中的数量, 判断 选中的数量 和 总数量  是否一致
                let sum = 0
                for(let j = 0;j<checkList.length;j++){
                    if( checkList[j].checked ){
                        sum++
                    }
                }
                console.log( sum )
                checkAll.checked = sum === checkList.length 
                // if( sum === checkList.length ){
                //     //全部选中
                //     checkAll.checked = true
                // }else{
                //     //没有选中选中
                //     checkAll.checked = false
                // }   
            }
        }

    
    </script>
  </body>
</html>

 

 

阅读剩余
THE END