zoukankan      html  css  js  c++  java
  • 简单的全选反选

    在代码中注释很清楚,思路很清晰,写了js和jquery两种写法。喜欢用谁就用谁!

    <!DOCTYPE html>
    <html>
    <head>
    <meta charset="UTF-8">
    <title>简单的全选反选demo</title>
    
    <style>
    * {
        padding:0;
        margin:0;
    }
    .wrap {
        width:300px;
        margin:20px auto 0;
    }
    table {
        border-collapse:collapse;
        border-spacing:0;
        border:1px solid #c0c0c0;
        width:300px;
    }
    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" name="choose"/>
                    </td>
                    <td>红烧肉</td>
                    <td>家里蹲</td>
                </tr>
                <tr>
                    <td>
                        <input type="checkbox" name="choose"/>
                    </td>
                    <td>西红柿鸡蛋</td>
                    <td>家里蹲</td>
                </tr>
                <tr>
                    <td>
                        <input type="checkbox" name="choose"/>
                    </td>
                    <td>红烧狮子头</td>
                    <td>家里蹲</td>
                </tr>
                <tr>
                    <td>
                        <input type="checkbox" name="choose"/>
                    </td>
                    <td>日式肥牛</td>
                    <td>家里蹲</td>
                </tr>
    
            </tbody>
        </table>
    </div>
    <script>
     var all = document.getElementById("j_cbAll");
     var tbody = document.getElementById("j_tb");
     var checkboxs = tbody.getElementsByTagName("input");
     //给全选反选checkbox绑定点击事件
     all.onclick = function() {
        //当点击1的时候循环遍历除过1之外的所有checkbox,并讲这些checkbox的状态设置的和1一样
         for (var i = 0; i < checkboxs.length; i++) {
            //当前遍历到了的checkbox
             var checkbox = checkboxs[i];
             //this.checked表示1的选中状态,this指的是1
             //所以这句是将1的状态设置为当前遍历到的checkbox
             checkbox.checked = this.checked;
         }
     };
     //循环给所有除过1的checkbox绑定click事件
     for (var i = 0; i < checkboxs.length; i++) {
         checkboxs[i].onclick = function() {
            //作为一个标记表示1应该选中还是不选中
             var isCheckedAll = true;
             //循环遍历除1以外的所有checkbox
             for (var i = 0; i < checkboxs.length; i++) {
                //只要有一个是未选中的,那么1就应该是未选中的,将isCheckedAll设置为false,循环就可以结束了
                 if (!checkboxs[i].checked) {
                     isCheckedAll = false;
                     break;
                 }
             }
             //将1的状态更新为isCheckedAll
             all.checked = isCheckedAll;
         };
     }
    </script>
    <!--下面代码是Jquery代码实现方法。思路一样-->
    <script src="../js/jquery.js"></script>
    <script>
        var checkboxs = $("input[name='choose']");
        $("#j_cbAll").click(function () {
            //此时的this才指的是id=j_cbAll的checkbox,因为进入$.each后作用域就自动切换成checkboxs中的内容,所以要吧当前的this保存起来待会在$.each中用
            var thisAll = this;
            //$.each中的function的作用域是checkboxs数组中的内容
            $.each(checkboxs, function (i, item) {
                //item.checked = this.checked;
                //此时this指的是遍历到的元素,thisAll就是我们保存的id=j_cbAll的checkbox
                this.checked = thisAll.checked;
            });
        });
    
        $("input[name='choose']").on("click", function () {
            var isCheckedAll = true;
            $.each(checkboxs, function (i, item) {
                if(!this.checked){
                    isCheckedAll = false;
                    return false;
                }
            })
            $("#j_cbAll").prop("checked",isCheckedAll);
        })
    </script>
    </body>
    </html>

     原地址:http://www.17sucai.com/pins/demoshow/24737

  • 相关阅读:
    提问回顾与个人总结
    软工结对作业
    软件工程第一次阅读作业
    软件工程第0次作业
    oo第四次博客总结
    第三次博客总结
    第二次博客作业
    OO第一次总结博客
    软工第二次作业
    软工第一次作业
  • 原文地址:https://www.cnblogs.com/phermis/p/7002367.html
Copyright © 2011-2022 走看看