JS 多选框全选和取消全选

简介: JS 多选框全选和取消全选

浏览网页时我们经常能见到全选选项,比如双十一剁手清空购物车时,就会用到一键全选,但是全选与取消全选的思维是什么呢?


思路:我们会利用多选框的 checked 属性来完成,checked 的返回值是一个 Boolean 类型的值,勾选返回 true ,不勾选返回 false。


全选与取消全选的 JS 代码实现:(文章最后有完整代码参考)


qx是获取的全选选项的元素,xz是获取的要选择的所有元素(this.checked 为全选选项是否选择,选择了返回 true ,没有选择则返回 false,并将此结果利用循环赋值给每一个选项)


var qx=document.getElementById('qx');

var xz=document.querySelector('tbody').querySelectorAll('input');

qx.onclick=function(){

          for(var i=0;i<xz.length;i++){

              xz[i].checked=this.checked;

          }

      }

单独选项全部选完后全选选项自动勾选的 JS 代码:


先遍历注册事件,然后第二个 for循环的作用为检查是否所有的选项框都选择了,如果没有选择某一个选项,即 !xz[i].checked ,然后赋值给 flag 为 false,如果全选了则为 true 不变,最后把flag 的值返回给全选框的 checked


var qx=document.getElementById('qx');

var xz=document.querySelector('tbody').querySelectorAll('input');

for(var i=0;i<xz.length;i++){

          xz[i].onclick=function(){

              var flag=true;

              for(var i=0;i<xz.length;i++){

                  if(!xz[i].checked){

                    flag=false;

                    break;

                  }

              }

              qx.checked=flag;

          }

      }

完整代码:

<!DOCTYPE html>

<html lang="en">

<head>

   <meta charset="UTF-8">

   <meta http-equiv="X-UA-Compatible" content="IE=edge">

   <meta name="viewport" content="width=device-width, initial-scale=1.0">

   <title>Document</title>

  <style>

      table{

          margin: 270px auto;

          width: 500px;

          height: 350px;

          border: 1px solid;

          border-spacing: 0;

          font-size: 20px;

          font-weight:500;

      }

      td{

          border: 1px solid;

          padding-left: 10px;

      }

      .qxbox{

          padding:20px 10px;

          background-color: rgb(106, 183, 255);

      }

  </style>

</head>

<body>

   <table>

       <thead>

         <tr>

            <td class="qxbox"><label

               ><input type="checkbox" id="qx"> 全选</label></td>

         </tr>

       </thead>

       <tbody>

           <tr>

               <td> <input type="checkbox" id="1"> <label for="1">选项一</label></td>

           </tr>

           <tr>

               <td> <input type="checkbox" id="2"> <label for="2"> 选项二</label></td>

           </tr>

           <tr>

               <td> <input type="checkbox" id="3"> <label for="3">选项三</label> </td>

           </tr>

           <tr>

               <td> <input type="checkbox" id="4"> <label for="4">选项四</label> </td>

           </tr>

       </tbody>

   </table>

   <script>

      var qx=document.getElementById('qx');

      var xz=document.querySelector('tbody').querySelectorAll('input');

      qx.onclick=function(){

          for(var i=0;i<xz.length;i++){

              xz[i].checked=this.checked;

          }

      }

      for(var i=0;i<xz.length;i++){

          xz[i].onclick=function(){

              var flag=true;

              for(var i=0;i<xz.length;i++){

                  if(!xz[i].checked){

                    flag=false;

                    break;

                  }

              }

              qx.checked=flag;

          }

      }

   </script>

</body>

</html>



相关文章
|
存储 JavaScript
js实现多选、全选、反选、取消选择(篇一)
js实现多选、全选、反选、取消选择(篇一)
325 0
js实现多选、全选、反选、取消选择(篇一)
|
JavaScript 前端开发
JavaScript实现复选框全选与全不选的效果
JavaScript实现复选框全选与全不选的效果
83 0
|
JavaScript 前端开发
Javascript实现全选按钮
Javascript实现全选按钮
|
JavaScript
纯js全选/全不选
纯js全选/全不选
73 0
纯js全选/全不选
|
JavaScript 前端开发
JavaScript(js)隔行换色,省市二级联动,全选,全不选,反选
JavaScript(js)隔行换色,省市二级联动,全选,全不选,反选
153 0
|
前端开发 JavaScript
通过JavaScript 实现简单的全选、不全选的思想
实现的思路是,全选的按钮是否勾取,勾取后通过for循环来得到每一个按钮,赋值上全选按钮的勾取状态。
103 0
通过JavaScript 实现简单的全选、不全选的思想
|
JavaScript 前端开发
【JavaScript】案例 :复选框全选-全不选&省市二级联动以及课外扩展
本期主要介绍案例 :复选框全选-全不选&省市二级联动以及课外扩展
79 0
【JavaScript】案例 :复选框全选-全不选&省市二级联动以及课外扩展
|
JavaScript 前端开发
【JavaScript】DOM查询之全选练习
通过上期【JavaScript】DOM和事件简介和文档加载流程以及DOM查询(上)案例(附源码)再接一个全选小练习。
【JavaScript】DOM查询之全选练习
|
JavaScript 前端开发
杨老师课堂之JavaScript案例全选、全不选、及反选
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/kese7952/article/details/79906084      JavaScript案例之全选、全不选、及反选 效果图: 思路:     1.
1011 0