复选框全选中,全不选中,反选按钮实现
dom对象的getElementByName()函数可以将相同名字的对象都放到一个集合中返回,
通过操作这个集合中元素(也是dom对象)的checked属性来实现全选等功能
以下为基础写法
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>js测试</title>
    <script >
        //全选
        var hobbies = document.getElementsByName("hobby");
        function onclick1() {
            for(var i=0;i<hobbies.length;i++)
                hobbies[i].checked=true;
        }
        //全不选
        function onclick2() {
            for(var i=0;i<hobbies.length;i++)
                hobbies[i].checked = false;
        }
        function onclick3() {
            for(var i=0;i<hobbies.length;i++)
                hobbies[i].checked = !hobbies[i].checked;
        }
    </script>
</head>
<body>
  <!--复选框全选,全不选,反选-->
  爱好:<input type>
  <input type="checkbox" name="hobby" value="c"/>c
  <input type="checkbox" name="hobby" value="c++"/>c++
  <input type="checkbox" name="hobby" value="java"/>java
  <br>
  <button onclick="onclick1()">全选</button>
  <button onclick="onclick2()">全不选</button>
  <button onclick="onclick3()">反选</button>
</body>
</html>
以下为jQuery写法
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>js测试</title>
    <script type="text/javascript" src="static/script/jquery-3.4.1.min.js" ></script>
    <script type="text/javascript">
        /*
        *   jQuery写法
        * */
        $(function () {
            //全选/全不选:要求点击这个复选框,下面三个全选,再次点击,下面三个全不选
            $("#all").click(function () {
                $("input[name='hobby']").prop("checked", this.checked);//this代表着调用这个function的dom对象,即'全选/全不选'这个复选框
            });
            //全选按钮
            $("[name=btn1]").click(function () {
                $(":checkbox").prop("checked", true);
            })
            //全不选按钮
            $("[name=btn2]").click(function () {
                $(":checkbox").prop("checked",false);
            })
            //反选按钮
            $("[name=btn3]").click(function () {
                $("[name=hobby]").each(function () {
                    this.checked=!this.checked;
                })
                /*检查是否满选
                * */
                //得到全部选项的数量
                var checkedLength = $("[name=hobby]:checked").length;
                //得到选中选项的数量
                var AllLength = $("[name=hobby]").length;
                //比较两个数量
                $("#all").prop("checked",checkedLength==AllLength)
            })
            //提交按钮
            $("[name=btn4]").click(function () {
                $("[name=hobby]:checked").each(function () {
                    alert(this.value);
                })
            })
            //有一个没选中,全选/全不选就取消选中
            //为所有复选框绑定点击事件
            $("[name=hobby]").click(function () {
                var checkedLength = $("[name=hobby]:checked").length;
                var AllLength = $("[name=hobby]").length;
                $("#all").prop("checked",checkedLength==AllLength)
            })
        })
    </script>
</head>
<body>
<!--复选框全选,全不选,反选-->
    爱好:<input type="checkbox" name="checkbox" id="all">全选/全不选 
    <br>
    <input type="checkbox" name="hobby" value="c" />c
    <input type="checkbox" name="hobby" value="c++"/>c++
    <input type="checkbox" name="hobby" value="java"/>java
    <br>
    <button name="btn1" value="全选">全选</button>
    <button name="btn2" value="全不选">全不选</button>
    <button name="btn3" value="反选" >反选</button>
    <button name="btn4" value="提交">提交</button>
</body>
</html>

                
            
        
浙公网安备 33010602011771号