欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

纯javascript实现选择框的全选与反选

程序员文章站 2022-07-06 18:48:22
HTML部分 js部分 ......

 html部分

  <div id="wrap_input_box" >
            <input type="checkbox"><br>
            <input type="checkbox"><br>
            <input type="checkbox"><br>
            <input type="checkbox"><br>
            <input type="checkbox"><br>
            <input type="checkbox"><br>
            <input type="checkbox"><br>
            <input type="checkbox"><br>
            <input type="checkbox"><br>
            <input type="checkbox"><br>
            
      </div>
      <label for="olabel">选择全部 一键上路<input type="checkbox" id= 'all'></label> 

js部分

  var oinput = document.getelementbyid('all');
        //  var oinput_s = document.getelementsbytagname('input');
         var oinput_s = document.queryselectorall('#wrap_input_box>input');
        //  console.log(oinput_s[6]);
        // 先设置点击全选按钮后 实现所有的选择标签显示选择     取消点击后  取消所有标签选择
        oinput.onclick = function(){
            if (this.checked){
                for (var i =0;i<oinput_s.length;i++){
                    oinput_s[i].checked=true;
                }
            }else{
                for (var i =0;i<oinput_s.length;i++){
                    oinput_s[i].checked=false;
                }
            }
        }
        // 下面设置的是   每个小标签如果在全选状态下取消选择其中的某一个 对应的按钮的状态会变为没有全选
                // 给每个小选择标签设置绑定点击事件
        for(var j = 0;j<oinput_s.length;j++){
             oinput_s[j].onclick = function (){
                   //定义一个标志位  这个标志位 用来判断后面的选择按钮的状态
                   var flag = true;
                   //遍历每个小选择标签    判断 如果每一个小标签是非选择状态   将标志位改为 false 状态 即对应为未选择
                   for (k=0;k<oinput_s.length;k++){
                       if(!oinput_s[k].checked){
                           flag=false;
                           break;
                       }
                       
                   }

                   if(flag){
                       oinput.checked=true;
                   }else{
                       oinput.checked=false;
                   }
                   
             }
        }