js--checked的全选,反选 ,点击子的checkbox改变父的checkbox状态

下面是我通过学习js基础利用js简单的实现了一个小的案例包含具体的思路和代码,这里的表格没有写css样式美化。

点击父的checkbox时呈现的状态

当子的checkbox没有全部选中时,父的checkbox也改变了相应的状态

点击反选之后呈现的状态

具体代码如下:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
    <style>
        .gray {
            color: gray;
        }
    </style>
</head>
<body>
    <div class="warp">
        <table border="1">
            <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>iPhone8</td>
                    <td>8000</td>
                </tr>
                <tr>
                    <td>
                        <input type="checkbox" />
                    </td>
                    <td>iPad pro</td>
                    <td>5000</td>
                </tr>
                <tr>
                    <td>
                        <input type="checkbox" />
                    </td>
                    <td>iPhone11</td>
                    <td>10000</td>
                </tr>
            </tbody>
        </table>
        <input type="button" value="反选" id="btn">
    </div>
    <script src="common.js"></script>
   <script>
       // 1 点击全选按钮(父的checkbox)的时候,让子的checkbox的选中状态跟父的checkbox保持一致
             //1.1 获取父checkbox注册点击事件
           var j_cbAll = my$(‘j_cbAll‘);
           var checkboxs = document.querySelectorAll(‘#j_tb input[type=checkbox]‘);
           j_cbAll.onclick = function () {
             //2.2 让子的checkbox的选中状态跟父的checkbox保持一致
            //获取所有子的checkbox
             var i = 0, len=checkboxs.length;
             for (; i<len; i++) {
                 //获取每一个checkbox
                 var checkbox = checkboxs[i];
                 //让每一个checkbox的选中状态和父的checkbox保持一致
                 checkbox.checked = this.checked;
             }

           }

       // 2 给所有子checkbox注册点击事件,点击子checkbox修改父的checkbox 如果有一个子的checkbox没有选中,父的checkbox也不能选中
       // 2.1 给所有的checkbox注册点击事件

        var i = 0, len=checkboxs.length;
        for (; i<len; i++) {
            var checkbox =checkboxs[i];
            //注册点击事件
            checkbox.onclick = function () {
                //2.2 如果有一个子checkbox没有选中,父的checkbox也选不中
                // 假设,所有子的checkbox都选中了
                var isAllCheked = true;
                for (i = 0; i<len; i++) {
                    //获取每一个子的checkbox
                    checkbox = checkboxs[i];
                    //判断选中状态
                    if(!checkbox.checked)
                    {
                        //如果checkbox没有选中 设置isAllChecked = false
                        isAllCheked = false;
                        break;
                    }
                }
                // 设置父的checkbox的选中状态
                j_cbAll.checked = isAllCheked;
            }
        }

       // 3 反选
       // 3.1 给反选按钮注册点击事件
       my$(‘btn‘).onclick = function () {
           // 3.2 给所有子的checkbox 对选中状态进行反选
           for(i = 0; i<len; i++) {
               var checkbox = checkboxs[i];
               //反选
                checkbox.checked = !checkbox.checked;
           }
       }

   </script>
</body>
</html>

原文地址:https://www.cnblogs.com/awjbky/p/12169825.html

时间: 2024-11-11 00:16:35

js--checked的全选,反选 ,点击子的checkbox改变父的checkbox状态的相关文章

工作当中实际运用(2)——js原生实现全选/反选

老规矩 直接上代码  代码中详细注释: function checkAll(){ var alls=document.getElementById('tab-stp').getElementsByTagName('input');//获取到 id tab-stp 下面的所有input for(i=0;i<alls.length;i++){ //通过for循环 把所有input遍历出来 if(alls[i].checked==true){//通过checked turn false来控制是否选中

【HTML5】页面点击按钮添加一行 删除一行 全选 反选 全不选

页面点击按钮添加一行    删除一行   全选   反选  全不选 页面效果图如下 html页面代码 <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <link rel="stylesheet" href="bootstrap-3.3.7-dist/css/bootstrap.css" /> <script type=&qu

js 实现全选反选

最近在做一个js特效:全选,反选. 效果能实现,可是只执行了一次.多次点击,发现效果不能触发了.后来查了些文档,才了解是  attr  跟 prop 的区别! 代码直接贴出来: ($("#全选ID").attr("checked") 的返回值 就是  true/false )  attr只能运行一次:   function checked_all(){                            $("input[name='XXX']:chec

全选反选取消-js代码

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-

js实现全选反选

在前端中用到全选反选的案例并不少,在这里呢我就实现这个功能给大家参考参考. 这里呢就先贴上我的html和css代码 <div class="wrap"> <table> <thead> <tr> <th> <input type="checkbox" id="theadInp" /> </th> <th>快递</th> <th>

checked 全选 反选 示例

不多说看例子: 右上侧全选,然后每个栏又有一个栏目全选. 解决办法: function selectSubscibe(_class) { $("." + _class + " input[type='checkbox']").each(function() { this.checked = !this.checked; }) } onclick="selectSubscibe('zhuanxiang')"函数内传入子类的class即可完成全选反选

JS 全选反选功能

全选按钮:<input type=\"checkbox\" id=\"cheSelectAll\" />选择</li>"); 选择项:<input name=\"chkItem\" type=\"checkbox\" value=\"" + this.ID + "\" /> //全选反选 $("#cheSelectAll"

js全选 反选

// 全选 反选 allChoose: function (o) { var obj = $.extend(true, { id: "#id", name: "name", allSelection: true, invertSelection: true }, o); var $id; if (obj.id.substring(1) === "#") { $id = obj.id; } else { $id = "#" +

jquery 全选 反选 取消 批量删除

首选引入jquery 全选 //全选 function myall(){ $("input[name='d[]']").each(function(index,e){ $(this).prop('checked',true); }); } 取消 //当true改为false时为取消 // function no(){ // $("input[name='d[]']").each(function(index,e){ // $(this).prop('checked'