zoukankan      html  css  js  c++  java
  • JavaScript--全选与反选

    在学习js中发现全选与反选也有很多种:

    例如:

    一. 按钮版全选与多选

     1 <!DOCTYPE html>
     2 <html lang="en">
     3 <head>
     4     <meta charset="UTF-8">
     5     <title>Title</title>
     6 </head>
     7 <body>
     8     <button>全选</button>
     9     <button>反选</button>
    10     <button>取消选择</button>
    11     <button>提交</button>
    12     <input type="checkbox" name="cbox[]" value="你"/>
    13     <input type="checkbox" name="cbox[]" value="是"/>
    14     <input type="checkbox" name="cbox[]" value="猪"/>
    15     <input type="checkbox" name="cbox[]" value="八"/>
    16     <input type="checkbox" name="cbox[]" value="戒"/>
    17     <input type="checkbox" name="cbox[]" value="二"/>
    18     <input type="checkbox" name="cbox[]" value="大"/>
    19 </body>
    20 </html>
    21 <script>
    22     "use strict";
    23     var btns = document.getElementsByTagName('button');
    24     var inps = document.getElementsByTagName('input');
    25     //    是否选择
    26     var flag;
    27     //    全选
    28     btns[0].onclick = function () {
    29         selectAll(true);
    30     }
    31 
    32     //    反选
    33     btns[1].onclick = function () {
    34         for(var i = 0; i < inps.length ; i++ ) {
    35             inps[i].checked = !inps[i].checked;
    36         }
    37     }
    38 
    39     //    取消选择
    40     btns[2].onclick = function () {
    41         selectAll(false);
    42     }
    43 
    44     //    提交
    45     btns[3].onclick = function () {
    46         var str = "";
    47         for(var i = 0; i < inps.length ; i++ ) {
    48             if (inps[i].checked) {
    49                 console.log(inps[i].value);
    50                 str = str + inps[i].value;
    51             }
    52         }
    53         alert(str);
    54     }
    55 
    56     //   全选与取消选择公共方法
    57     function selectAll(flag) {
    58         for(var i = 0; i < inps.length ; i++ ) {
    59             inps[i].checked = flag;
    60         }
    61     }
    62 </script>

    二.全选与反选多选框版本

     1 <!DOCTYPE html>
     2 <html lang="en">
     3 <head>
     4     <meta charset="UTF-8">
     5     <title>Title</title>
     6 </head>
     7 <body>
     8 <input type="checkbox" />全选 <input type="checkbox" />反选 <button id="clear">取消选择</button><br/>
     9 <input type="checkbox" /><br/>
    10 <input type="checkbox" /><br/>
    11 <input type="checkbox" /><br/>
    12 <input type="checkbox" /><br/>
    13 <input type="checkbox" /><br/>
    14 <input type="checkbox" /><br/>
    15 <input type="checkbox" /><br/>
    16 <input type="checkbox" /><br/>
    17 <input type="checkbox" /><br/>
    18 <input type="checkbox" /><br/>
    19 <input type="checkbox" /><br/>
    20 </body>
    21 </html>
    22 <script>
    23     /*
    24     *功能描述: 全选:全部多选框处于选择状态,全选不处于选择:多选框处于不选择状态
    25     *         反选;未选择的变换成功选择状态,选择状态的变为未选择状态
    26     *         取消选择: 所有选择状态的多选框都变成未选择状态
    27     *         如果下面的多选框全部选中,全选的checkbox就会自动选中
    28     * */
    29 
    30     // 获取多选框
    31     var inps = document.getElementsByTagName('input');
    32     var btn = document.getElementById('clear');
    33     var checkTrue =0; // 记录处于选择状态的多选个数
    34     // 全选
    35     inps[0].onclick = function () {
    36         if (inps[0].checked) {
    37             inps[1].checked = false ; // 排他
    38             for(var i = 0 ; i < inps.length; i++ ) {
    39                 if (i != 0 && i !=1) { //排除全选与反选功能选择框
    40                     inps[i].checked = true;
    41                 }
    42             }
    43             checkTrue = inps.length - 2 ;
    44         }else{
    45             for(var i = 0 ; i < inps.length; i++ ) {
    46                 if (i !=1 && i!=0) { //排除全选与反选功能选择框
    47                     inps[i].checked = !inps[i].checked;
    48                 }
    49             }
    50             checkTrue = 0 ;
    51         }
    52 
    53     }
    54     // 反选
    55     inps[1].onclick = function () {
    56         inps[0].checked = false ;
    57         for(var i = 0 ; i < inps.length; i++ ) {
    58             if (i !=1 && i!=0) { //排除全选与反选功能选择框
    59                 inps[i].checked = !inps[i].checked;
    60             }
    61         }
    62         checkTrue = inps.length - 2 - checkTrue ;
    63     }
    64 
    65     // 取消选择
    66     btn.onclick = function () {
    67         for(var i = 0 ; i < inps.length; i++ ) {
    68             inps[i].checked = false;
    69         }
    70         checkTrue = 0 ;
    71     }
    72 
    73     // 当全选框没选择中的时候,下面多选框出现全部选择状态,全选框自动选中
    74     for(var i = 0 ; i < inps.length; i++) {
    75         //排除全选与反选功能选择框,并且记录选择状态
    76         if (i !=1 && i!=0 ) {
    77             inps[i].onclick = function () {
    78                 if(this.checked) {
    79                     ++checkTrue == inps.length-2?inps[0].checked = true:checkTrue;
    80                 }else{
    81                     --checkTrue > 0 ? checkTrue : checkTrue = 0;
    82                 }
    83                 console.log(checkTrue);
    84                 // 多选框出现全部选择状态,全选框自动选中
    85                 if(checkTrue == inps.length - 2) {
    86                     inps[0].checked = true;
    87                 }else{ // 多选框出现一个以上没有在选择状态,全选框自动不选中
    88                     inps[0].checked = false;
    89                 }
    90             }
    91 
    92         }
    93 
    94 
    95     }
    96 
    97 
    98 </script>

    难点: 

        多选框版本的全选与反选,主要要注意全选状态中下面多选框的选中状态,如果有一个以上的多选框不在选中状态就要把全选状态去除,反之,多选框都在选中状态,那么全选框就是要在选中状态
  • 相关阅读:
    JSTL 标签库<转>
    EL表达式 <转>
    前端知识点记录
    spring boot 项目连接数据库查询数据过程
    vue -电子时钟
    XML读取
    Druid 连接池
    java JDBC自我总结
    各种数据库的链接方式总结
    Java MD5获取
  • 原文地址:https://www.cnblogs.com/mrszhou/p/7665138.html
Copyright © 2011-2022 走看看