复选框全选和取消全选demo

复制代码
<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>HTML复选框的全选和取消全选</title>
</head>

<body onload="bindClick()">
    <script>
        // function checkAll() {
        //     var firstCheck = document.getElementById("firstCheck");
        //     console.log(firstCheck)
        //     //获取选中状态
        //     console.log(firstCheck.checked)
        //     var aihaos = document.getElementsByName("aihao")
        //     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
        //         }
        //     }
        // }


        function checkAll() {
            var firstCheck = document.getElementById("firstCheck")
            var aihaos = document.getElementsByName("aihao")
            for (var i = 0; i < aihaos.length; i++) {
                aihaos[i].checked = firstCheck.checked
            }
        }


        //页面加载完成之后,为每个name是aihao的checkbox都绑定了点击事件
        function bindClick() {
            var aihaos = document.getElementsByName("aihao")
            console.log(aihaos.length)
            for (var i = 0; i < aihaos.length; i++) {
                aihaos[i].onclick = function () {//这样就为每个name是aihao的checkbox都绑定了点击事件
                    var count = aihaos.length
                    var checkNum = 0
                    for (var i = 0; i < aihaos.length; i++) {
                        if (aihaos[i].checked) {
                            checkNum++;
                        }
                    }
                    if (checkNum == count) {
                        document.getElementById("firstCheck").checked = true;
                    } else {
                        document.getElementById("firstCheck").checked = false;
                    }
                }
            }
        }
    </script>
    <input type="checkbox" id="firstCheck" onclick="checkAll()" />全选<br>
    <input type="checkbox" name="aihao" value="0" />抽烟<br>
    <input type="checkbox" name="aihao" value="1" />喝酒<br>
    <input type="checkbox" name="aihao" value="2" />烫头<br>
    <input type="checkbox" name="aihao" value="3" />跳舞<br>
    <input type="checkbox" name="aihao" value="4" />唱歌<br>
    <input type="checkbox" name="aihao" value="5" />睡觉<br>
    <input type="checkbox" name="aihao" value="6" />打豆豆<br>
</body>

</html>
相关推荐
前端Hardy19 分钟前
别再忽略 Promise 拒绝了!你的 Node.js 服务正在“静默自杀”
前端·javascript·面试
前端Hardy21 分钟前
别再被setTimeout闭包坑了!90% 的人都写错过这个经典循环
前端·javascript·vue.js
小林coding27 分钟前
专为程序员打造的简历模版来啦!覆盖前端、后端、测开、大模型等专业简历
前端·后端
前端Hardy27 分钟前
你的 Vue 组件正在偷偷吃掉内存!5 个常见的内存泄漏陷阱与修复方案
前端·javascript·面试
RaidenLiu38 分钟前
Flutter Platform Channel 底层架构解析 —— 从 BinaryMessenger 到跨平台消息通信机制
前端·flutter·前端框架
bluceli41 分钟前
CSS容器查询:响应式设计的新范式
前端·css
Tapir44 分钟前
被 Karpathy 下场推荐的 NanoClaw 是什么来头
前端·后端·github
前端人类学44 分钟前
深入解析JavaScript中的null与undefined:区别、用法及判断技巧
前端·javascript
ssshooter2 小时前
Tauri 项目实践:客户端与 Web 端的授权登录实现方案
前端·后端·rust
兆子龙2 小时前
【React】19 深度解析:掌握新一代 React 特性
前端·架构