DOM编程-复选框的全选和取消全选

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <title>复选框的全选和取消全选</title>
    </head>
    <body>
        <script type="text/javascript">
            window.onload = function(){
                //第一部分:通过第一个复选框的状态来确定其它复选框的状态
                // 获取第一个复选框对象
                var firstCheck = document.getElementById("firstCheck");
                // 根据name获取所有name=aihao的复选框
                var aihaos = document.getElementsByName("aihao");
                // 为第一个复选框对象赋上click事件
                firstCheck.onclick = function(){
                    /*
                    if(firstCheck.checked){
                        // 全选
                        for(var i = 0; i < aihaos.length; i++){
                            aihaos[i].checked = true;
                        }
                    }else{
                        // 取消全选
                        for(var i = 0; i < aihaos.length; i++){
                            aihaos[i].checked = false;
                        }
                    }
                    */
                    // 对上面注释部分代码进行优化
                    // 通过循环为爱好里的所有复选框赋予与第一个复选框相同的状态
                    for(var i = 0; i < aihaos.length; i++){
                        aihaos[i].checked = firstCheck.checked;
                    }
                }
                //第二部分:通过其它复选框的状态来确定第一个复选框的状态
                // 对数组进行遍历,给每个爱好都绑定click事件
                for(var i = 0; i < aihaos.length; i++){
                    aihaos[i].onclick = function(){
                        /*
                            每次发生鼠标点击事件这个变量checkedCount都需要归零,所以需要声明在该位置。
                            目的是每个爱好发生鼠标点击事件的时候都需要判断,所有爱好的选中状态,如果
                            所有爱好的选中状态等于爱好的总个数,第一个复选框就是选中状态,否则就是非选中状态。
                        */
                        var checkedCount = 0;
                        for(var k = 0; k < aihaos.length; k++){
                            if(aihaos[k].checked){
                                checkedCount ++;
                            }
                        }
                        /*
                        if(all == checkedCount){
                            firstCheck.checked = true;
                        }else{
                            firstCheck.checked = false;
                        }
                        */
                        // 对上面四行代码进行优化
                        firstCheck.checked = (aihaos.length == checkedCount);
                    }
                }
            }
        </script>
        <input type="checkbox" id="firstCheck"/><br />
        <input type="checkbox" name="aihao" value="Java"/>Java<br />
        <input type="checkbox" name="aihao" value="HTML"/>HTML<br />
        <input type="checkbox" name="aihao" value="CSS"/>CSS<br />
        <input type="checkbox" name="aihao" value="JS"/>JS<br />
        <input type="checkbox" name="aihao" value="JDBC"/>JDBC<br />
    </body>
</html>

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值