js-全选反选效果

全选反选效果在很多网页都能见到,那具体代码是怎样的呢,在这里简单介绍一下两种方式js,jquery:
工具:WebStorm等
前提:熟悉html,css,JavaScript,jQuery
先用js简单看一下:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style>
        * {
            padding: 0;
            margin: 0;
        }

        .wrap {
            width: 300px;
            margin: 100px auto 0;
        }

        table {
            border-collapse: collapse;
            border-spacing: 0;
            border: 1px solid #c0c0c0;
        }

        th,
        td {
            border: 1px solid #d0d0d0;
            color: #404060;
            padding: 10px;
        }

        th {
            background-color: #09c;
            font: bold 16px "微软雅黑";
            color: #fff;
        }

        td {
            font: 14px "微软雅黑";
        }

        tbody tr {
            background-color: #f0f0f0;
        }

        tbody tr:hover {
            cursor: pointer;
            background-color: #fafafa;
        }
    </style>
</head>
<body>
    <div class="wrap">
        <table>
            <thead>
            <tr>
                <th>
                    <input type="checkbox" id="j_cbAll" />
                </th>
                <th>学生姓名</th>
                <th>邮箱地址</th>
            </tr>
            </thead>
            <tbody id="j_tb">
            <tr>
                <td>
                    <input type="checkbox" />
                </td>
                <td>张三</td>
                <td>1234567890@qq.com</td>
            </tr>
            <tr>
                <td>
                    <input type="checkbox" />
                </td>
                <td>李四</td>
                <td>1234567891@qq.com</td>
            </tr>
            <tr>
                <td>
                    <input type="checkbox" />
                </td>
                <td>王五</td>
                <td>1234567892@qq.com</td>
            </tr>
            <tr>
                <td>
                    <input type="checkbox" />
                </td>
                <td>赵六</td>
                <td>1234567893@qq.com</td>
            </tr>
            </tbody>
        </table>
    </div>
    <script>
        //查找id为j_tb的元素
        var j_tb = document.getElementById('j_tb');
        //查找j_tb下的input标签
        var inputs=j_tb.getElementsByTagName('input');
        //查找id为j_cbAll的元素
        var j_cbAll = document.getElementById('j_cbAll');
        j_cbAll.onclick=function () {   //全选事件,每个input设置为checked
            for (var i=0;i<inputs.length;i++){
                var input = inputs[i];
                if (input.type==='checkbox'){
                    input.checked=this.checked;
                }
            }
        }
        for (var i=0;i<inputs.length;i++){
            var input=inputs[i];
            if (input.type!=='checkbox'){
                continue;
            }
            input.onclick=function () {
                checkAll(); //调用checkAll方法,判断是否选中主复选框
            }
        }
        function checkAll() {
            var ischeck=true;
            for (var i=0;i<inputs.length;i++){
                var input=inputs[i];
                //判断是否为input标签
                if (input.type!=='checkbox'){
                    continue;
                }
                if (!input.checked){    //判断input标签是否全部选中
                    ischeck=false;
                }
            }
            j_cbAll.checked=ischeck;    //判断主复选框是否选上,true为选上,false为不选
        }
    </script>
</body>
</html>

接下来我们用jQuery看一下:


<!DOCTYPE html>
<html>
<head lang="en">
    <meta charset="UTF-8">
    <title></title>
    <style>
        * {
            padding: 0;
            margin: 0;
        }

        .wrap {
            width: 300px;
            margin: 100px auto 0;
        }

        table {
            border-collapse: collapse;
            border-spacing: 0;
            border: 1px solid #c0c0c0;
        }

        th,
        td {
            border: 1px solid #d0d0d0;
            color: #404060;
            padding: 10px;
        }

        th {
            background-color: #09c;
            font: bold 16px "微软雅黑";
            color: #fff;
        }

        td {
            font: 14px "微软雅黑";
        }

        tbody tr {
            background-color: #f0f0f0;
        }

        tbody tr:hover {
            cursor: pointer;
            background-color: #fafafa;
        }
    </style>
   
</head>

<body>
<div class="wrap">
    <table>
        <thead>
        <tr>
            <th>
                <input type="checkbox" id="j_cbAll" />
            </th>
            <th>学生姓名</th>
            <th>邮箱地址</th>
        </tr>
        </thead>
        <tbody id="j_tb">
        <tr>
            <td>
                <input type="checkbox" />
            </td>
            <td>张三</td>
            <td>1234567890@qq.com</td>
        </tr>
        <tr>
            <td>
                <input type="checkbox" />
            </td>
            <td>李四</td>
            <td>1234567891@qq.com</td>
        </tr>
        <tr>
            <td>
                <input type="checkbox" />
            </td>
            <td>王五</td>
            <td>1234567892@qq.com</td>
        </tr>
        <tr>
            <td>
                <input type="checkbox" />
            </td>
            <td>赵六</td>
            <td>1234567893@qq.com</td>
        </tr>
        </tbody>
    </table>
</div>
 <!--    引入jQuery库-->
    <script src="js/jquery-1.12.4.js"></script>
    <script>
        $(function () {
            //先获取j_cbAll的这个复选框,注册点击事件,点击的时候让下面tbody中所有的复选框选中或不全选
            //让tbody中所有的复选框的选中状态和当前的这个全选的复选框的选中状态一致
            $("#j_cbAll").click(function () {
                var cked=$(this).prop("checked");//保存当前主复选框的选中状态
                //获取tbody中所有的复选框
                $("#j_tb").find(":checkbox").prop("checked",cked);
            });

            //获取tbody中所有的复选框
            $("#j_tb").find(":checkbox").click(function () {
                //先获取tbody中所有的复选框的个数
                var length1=$("#j_tb").find(":checkbox").length;
                //再获取tbody中所有选中的复选框的个数
                var length2=$("#j_tb").find(":checked").length;
                //二者比较,如果相同,主复选框选中
                if(length1==length2){
                    //都选中,为true
                    $("#j_cbAll").prop("checked",true);
                }else{
                    //没全选中,为false
                    $("#j_cbAll").prop("checked",false);
                }
            });
        });
    </script>
</body>
</html>

最后网页测试查看效果:
在这里插入图片描述
效果达到了,成功完成!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值
>