JavaScrip实现checkbox全选、全不选、反选功能

 

一、全选思路:

1、全选框未选中时,点击全选所有复选框被选中;

2、在全选状态下,有一个复选框未选中,则全选按钮未选中;

3、如果普通复选框全被选中,则全选按钮被选中;

二、反选思路:

1、点击反选时,所有被选中的复选框设为未选中,所有未选中复选框设为选中;

三、要点:

1、通过checked属性判断和设置checkbox的选中状态,true为选中,false未选中;

2、通过type属性判断对象是否为复选框;

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title>demo</title>
</head>
<body>
    <p>
        <input type="checkbox" id = "all">全选&nbsp;&nbsp;
        <input type="checkbox" id="reverse">反选
    </p>
    <p><input type="checkbox" class="check">1</p>
    <p><input type="checkbox" class="check">2</p>
    <p><input type="checkbox" class="check">3</p>
    <p><input type="checkbox" class="check">4</p>
    <p><input type="checkbox" class="check">5</p>
    <p><input type="checkbox" class="check">6</p>

    <script type="text/javascript">
        window.onload = function(){
            /*
             * 通过checked属性判断和设置checkbox的选中状态,true为选中,false未选中。
             * type属性判断input标签的类型。
             */

            var all = document.getElementById("all");
            var reverse = document.getElementById("reverse");
            var oBox_group = document.getElementsByClassName("check");
            
            // 全选框点击事件
            all.onclick = function() {
                reverse.checked=false;     // 清除反选框选中状态
                // 遍历所有普通复选框
                for (var index = 0; index < oBox_group.length; index++) {
                    if (oBox_group[index].type=="checkbox") {
                        // 将普通复选框的checked值等于全选框的checked值(全选或全不选)
                        oBox_group[index].checked=all.checked;
                    }
                }
                
            }

            // 普通复选框点击事件
            for (var index = 0; index < oBox_group.length; index++) {
                // 为每个普通复选框绑定点击事件
                oBox_group[index].onclick = function() {
                    reverse.checked=false;     // 清除反选框选中状态
                    var flag = true;        // 设置标识元素
                    if (this.checked) {
                        // 循环所以得普通复选框
                        for (var index = 0; index < oBox_group.length; index++) {
                            // 判断是否存在一个复选框没有被选中,如果有则将标识flag设为true,并退出循环
                            if (oBox_group[index].type=="checkbox" && oBox_group[index].checked==false) {
                                flag = false;
                                break;
                            }
                        }
                        all.checked = flag;    // 将标识元素值赋给全选框,如果所有元素被选中,为flag = true
                    } else {
                        all.checked = false;    // 如果点击的复选框checked=false,则全选框的checked=false
                    }
                }
            }

            // 反选框点击事件
            reverse.onclick = function() {
                all.checked=false;    // 清除全选框选中状态
                // 遍历所有普通复选框
                for (var index = 0; index < oBox_group.length; index++) {
                    if (oBox_group[index].type=="checkbox") {
                        // checked=true的复选框设为false,checked=false的复选框设为true
                        oBox_group[index].checked=oBox_group[index].checked?false:true;
                    }
                }
            }

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

 

转载于:https://www.cnblogs.com/1-6-0/p/9396590.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是HTML中实现全选全不选反选的代码示例: 1. 全选效果 ```html <!DOCTYPE html> <html> <head> <title>全选</title> <script type="text/javascript"> function selectAll(){ var checkboxes = document.getElementsByName("fruit"); for(var i=0; i<checkboxes.length; i++){ checkboxes[i].checked = true; } } </script> </head> <body> <h3>水果列表</h3> <form> <input type="checkbox" name="fruit" value="apple">苹果<br> <input type="checkbox" name="fruit" value="banana">香蕉<br> <input type="checkbox" name="fruit" value="orange">橙子<br> <input type="checkbox" name="fruit" value="pear">梨子<br> <input type="button" value="全选" onclick="selectAll()"> </form> </body> </html> ``` 2. 全不选效果 ```html <!DOCTYPE html> <html> <head> <title>全不选</title> <script type="text/javascript"> function unselectAll(){ var checkboxes = document.getElementsByName("fruit"); for(var i=0; i<checkboxes.length; i++){ checkboxes[i].checked = false; } } </script> </head> <body> <h3>水果列表</h3> <form> <input type="checkbox" name="fruit" value="apple">苹果<br> <input type="checkbox" name="fruit" value="banana">香蕉<br> <input type="checkbox" name="fruit" value="orange">橙子<br> <input type="checkbox" name="fruit" value="pear">梨子<br> <input type="button" value="全不选" onclick="unselectAll()"> </form> </body> </html> ``` 3. 反选效果 ```html <!DOCTYPE html> <html> <head> <title>反选</title> <script type="text/javascript"> function reverseSelect(){ var checkboxes = document.getElementsByName("fruit"); for(var i=0; i<checkboxes.length; i++){ checkboxes[i].checked = !checkboxes[i].checked; } } </script> </head> <body> <h3>水果列表</h3> <form> <input type="checkbox" name="fruit" value="apple">苹果<br> <input type="checkbox" name="fruit" value="banana">香蕉<br> <input type="checkbox" name="fruit" value="orange">橙子<br> <input type="checkbox" name="fruit" value="pear">梨子<br> <input type="button" value="反选" onclick="reverseSelect()"> </form> </body> </html> ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值