表单全选取消全选

案例分析:

1.全选和取消全选做法:让下面所有复选框的checked属性(选中状态)跟随全选按钮即可;

2.下面复选框需要全部选中,上面的全选才可以选中做法:给下面所有复选框绑定点击事件,每次点击,都要循环查看下面所有的复选框是否有没选中的,如果有一个没选中的,上面全选框就不选中。

效果图:

表单全选取消全选

代码:

<!DOCTYPE html>
<html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>表单全选与取消全选</title>
        <style>
            *{
                margin: 0;
                padding: 0;
            }
            table{
                margin: 100px auto;
                text-align: center;
                border: 1px solid gray;
                border-spacing: 0;
                cursor: pointer;;
            }
            th,td{
                border: 1px solid gray;
                padding: 10px;
            }
            thead{
                background-color: powderblue;
            }
            .bg{
                background-color: rgb(190, 189, 189);
            }
        </style>
    </head>
    <body>
        <div id="wrap">
            <table>
                <thead>
                    <tr>
                        <th><input type="checkbox" id="selectAll"></th>
                        <th>商品</th>
                        <th>价格</th>
                    </tr>
                </thead>
                <tbody id="select">
                    <tr>
                        <td><input type="checkbox"></td>
                        <td>iphone 8</td>
                        <td>3999</td>
                    </tr>
                    <tr>
                        <td><input type="checkbox"></td>
                        <td>iphone 8 plus</td>
                        <td>4999</td>
                    </tr>
                    <tr>
                        <td><input type="checkbox"></td>
                        <td>iphone 11</td>
                        <td>5999</td>
                    </tr>
                    <tr>
                        <td><input type="checkbox"></td>
                        <td>iphone 11 pro</td>
                        <td>9999</td>
                    </tr>
                </tbody>
            </table>
        </div>
        <script>
            //设计鼠标移入和移出的背景变化
            var trs=document.getElementById("select").querySelectorAll("tr");
            for(var i=0;i<trs.length;i++){
                //鼠标移入事件
                trs[i].onmouseover=function(){
                    this.className="bg";
                }
                //鼠标移出事件
                trs[i].onmouseout=function(){
                    this.className="";
                }
            }
            //1.全选和取消全选
            //获取元素
            var selectAll=document.getElementById("selectAll");     //全选按钮
            var select=document.getElementById("select").getElementsByTagName("input");     //下面所有的复选框
            //注册事件
            selectAll.onclick=function(){
                //this.checked可以得到当前复选框的选中状态,如果是true则表示选中,如果是false就表示未选中
                for(var i=0;i<select.length;i++){
                    //看全选框是否全选,把它的选中状态赋值给下面所有的复选框
                    select[i].checked=this.checked;
                }
            }
            //2.判断下面的是否全选
            for(var i=0;i<select.length;i++){
                select[i].onclick=function(){
                    var flag=true;      //注意flag要放在点击事件里……
                    //下面的变量i是在另一个函数里,和外层的i是不同的作用域
                    for(var i=0;i<select.length;i++){
                        if(!select[i].checked){
                            flag=false;
                            break;
                        }
                    }
                    selectAll.checked=flag;
                }
            }
        </script>
    </body>
</html>