Js实现全选反选按钮功能

11 篇文章 0 订阅
6 篇文章 0 订阅

Js实现全选反选按钮功能(jQuery实现:https://blog.csdn.net/weixin_44657829/article/details/106043130

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<input type="checkbox" name="interest"> 篮球 <br>
<input type="checkbox" name="interest"> 读书 <br>
<input type="checkbox" name="interest"> 电影 <br>
<input type="checkbox" name="interest"> 阅读 <br>
<hr>
<input type="checkbox" id="selectAllOrNot" name="selectAllOrNot"> 全选/全不选
<button id="selectReverse " onclick="Reverse()">反选</button>
</body>
<script>
    var interest = document.getElementsByName('interest');
    var selectAllOrNot = document.getElementById('selectAllOrNot');
    // var selectReverse = document.getElementById('selectReverse');

    // onchange 是改变状态, 应用场景有三个地方: checkbox, 单选的select,  radio
    selectAllOrNot.onchange = function() {//1.获取当前状态
        // 获取到当前所操作的 checkbox的状态, 值为true或者false
        var status = this.checked;;//2.创建状态对象(T/F)
        // 让所有的interests的 checked 状态和 "全选/全不选" 状态保持一致。
        for(var i = 0; i < interest.length; i++){//3.遍历对象,
            interest[i].checked = status;//4.将当前的状态赋值给对象
        }
    };
    var interestLenght = interest.length;//5.创建对象长度

    //循环的目的是给每个 interest 绑定改变事件。
    for(var i = 0; i < interestLenght; i++) {//6.遍历对象

        /**
         * 每次对每个 interest改变之后, 判断所有的 interest 的状态. 判断的思路
         * 是获取所有的选中的 interest 的数量, 然后与 interest的总数量做比较,如果
         * 数量相同表示都被选中, 那么"全选/全不选"就要被选中,如果数量不相同,那么"全选/全不选"就不选中
         */
        interest[i].onchange = function() {//7.获取对象当前状态
            var num = 0;
            for(var j = 0; j < interestLenght; j++) {//8.遍历对象
                // 如果有一个被选中,num就 +1
                if(interest[j].checked) {//9.判断对象的状态
                    num++;//10.如果选中了就将变量num加一
                }
            }
            // 根据选中数量与总长度是否相同来确定"全选/全不选"最终的选中状态
            selectAllOrNot.checked = (num == interestLenght);//11.根据选中的个数与对象的长度进行
            // 比较如果相等,则选中,否则未选中
        }
    }
    //12.完成取反功能,单机按钮则取消选中对象,选中未选中对象。
    function Reverse () {

         var chas=true;
        for(var k=0;k<interestLenght;k++){
            var chass =interest[k].checked;
        if(chass){
            chas=false;
        }
        interest[k].checked= !chass;
        }
        selectAllOrNot.checked=chas;

    }

</script>
</html>

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值