`
aaron2007
  • 浏览: 5510 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

js对表格中的checkbox,进行全选中、部分选中,全不选中

阅读更多
<!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-Type" content="text/html; charset=utf-8" />

<script language="JavaScript">
    //判断所有的checkbox的选中状态
    //@id : checkbox的id
    function checkedStatus(id){

        //获取checkbox,如果子节点没有设置id,就得不到一部分checkbox
        var temp = document.getElementById(id);
       
        //设置checkbox的下级checkbox的状态
        setChildCheckBox(temp);

        //设置checkbox的上级checkbox的状态
        setParentCheckBox(temp);
    }

    //获取checkbox的下级checkbox信息
    //@entity : checkbox的DOM对象
    function findChildCheckBox(entity){

        //存放下级checkbox的数组
        var chkArray = new Array();

        //判断是否有input标签
        if(document.getElementsByTagName("input")){

            //获取所有的input标签
            var inputs = document.getElementsByTagName("input");

            //遍历input标签,获取下级checkbox
            for(var i = 0; i < inputs.length; i++){
                var ele = inputs[i];

                //判断type是“checkbox”,并且checkbox的parentId等于entity的id
                if(ele.type == "checkbox" && ele.getAttribute("parentId") == entity.id){
                    chkArray.push(ele);
                }
            }
        }
        return chkArray;
    }

    //获取checkbox的同级checkbox信息
    //@entity : checkbox的DOM对象
    function findBrotherCheckBox(entity){

        //存放同级checkbox的数组
        var chkArray = new Array();

        //判断是否有input标签
        if(document.getElementsByTagName("input")){

            //获取所有的input标签
            var inputs = document.getElementsByTagName("input");

            //遍历input标签,获取同级checkbox
            for(var i = 0; i < inputs.length; i++){
                var ele = inputs[i];

                //判断type是“checkbox”,并且checkbox的parentId等于entity的parentId
                if(ele.type == "checkbox" && ele.getAttribute("parentId") == entity.getAttribute("parentId")){
                    chkArray.push(ele);
                }
            }
        }
        return chkArray;
    }

    //获取checkbox的上级checkbox信息
    //@entity : checkbox的DOM对象
    function findParentCheckBox(entity){

        //存放上级checkbox的对象
        var _element = null;

        //判断是否有input标签
        if(document.getElementsByTagName("input")){

            //获取所有的input标签
            var inputs = document.getElementsByTagName("input");

            //遍历input标签,获取上级checkbox
            for(var i = 0; i < inputs.length; i++){
                var ele = inputs[i];

                //判断type是“checkbox”,并且checkbox的id等于entity的parentId
                if(ele.type == "checkbox" && ele.id == entity.getAttribute("parentId")){
                    _element = ele;
                    break;
                }
            }
        }
        return _element;
    }

    //设置checkbox的下级checkbox的状态
    //@entity : checkbox的DOM对象
    function setChildCheckBox(entity){

        //entity的选中状态
        var status = entity.checked;

        //获取entity的下级checkbox
        var childList = findChildCheckBox(entity);

        //判断是否有下级
        if(childList.length > 0){

            //遍历下级checkbox,并设置状态
            for(var i = 0; i < childList.length; i++){
                childList[i].checked = status;

                //设置childList[i]的下级checkbox的状态
                setChildCheckBox(childList[i]);
            }
        }
    }

    //设置checkbox的上级checkbox的状态
    //@entity : checkbox的DOM对象
    function setParentCheckBox(entity){

        //entity的上级checkbox的选中状态
        var parentChecked = true;

        //获取entity的上级checkbox
        var parentCheckBox = findParentCheckBox(entity);

        //判断是否有上级
        if(parentCheckBox){

            //获取entity的同级checkbox
            var brotherList = findBrotherCheckBox(entity);

            //判断是否有同级
            if(brotherList.length > 0){
               
                //遍历同级checkbox
                for(var i = 0; i < brotherList.length; i++){

                    //如果同级的checkbox有未选中的状态,则设置上级的checkbox的状态为false
                    if(brotherList[i].checked == false){
                        parentChecked = false;
                        break;
                    }
                }
            }

            //设置上级checkbox的选中状态
            parentCheckBox.checked = parentChecked;

            //设置parentCheckbox的上级checkbox的状态
            setParentCheckBox(parentCheckBox);
        }
    }

</script>
</HEAD>

<BODY>
<table>
    <tr>

<!--根节点的parentId="0" -->
        <td colspan="2"><input type="checkbox" name="chkAllBill" id="chkAllBill" parentId="0" onclick="checkedStatus(this.id);">ALL</td>
       
    </tr>
    <tr>

<!--子节点必须设置同时parentId,id -->
        <td colspan="2"><input type="checkbox" name="chkBill" id="chkBill1" parentId="chkAllBill" value="chkBill1" onclick="checkedStatus(this.id);">Root111</td>
    </tr>
    <tr>
        <td>&nbsp;</td>
        <td>
            <table>
            <tr>
                <td colspan='2'>
                <input type="checkbox" name="chkMat1" id="chkMat11" parentId="chkBill1" value="chkMat11" onclick="checkedStatus(this.id);">Product111
                </td>
            </tr>
            <tr>
                <td>&nbsp;</td>
                <td>
                    <table>
                        <tr>
                            <td>
                                <input type="checkbox" id="chkMat11-1" parentId="chkMat11"  onclick="checkedStatus(this.id);">childMat111
                            </td>
                        </tr>
                        <tr>
                            <td>
                                <input type="checkbox" id="chkMat11-2" parentId="chkMat11"  onclick="checkedStatus(this.id);">childMat222
                            </td>
                        </tr>
                        <tr>
                            <td>
                                <input type="checkbox" id="chkMat11-3" parentId="chkMat11"  onclick="checkedStatus(this.id);">childMat333
                            </td>
                        </tr>
                        <tr>
                            <td>
                                <input type="checkbox" id="chkMat11-4" parentId="chkMat11"  onclick="checkedStatus(this.id);">childMat444
                            </td>
                        </tr>
                    </table>
                </td>
            </tr>
            <tr>
                <td><input type="checkbox" name="chkMat1" id="chkMat12" parentId="chkBill1" value="chkMat12" onclick="checkedStatus(this.id);">Product222</td>
            </tr>
            <tr>
                <td><input type="checkbox" name="chkMat1" id="chkMat13" parentId="chkBill1" value="chkMat13" onclick="checkedStatus(this.id);">Product333</td>
            </tr>
            </table>
        </td>
    </tr>
    <tr>
        <td colspan="2"><input type="checkbox" name="chkBill" id="chkBill2" parentId="chkAllBill" value="chkBill2" onclick="checkedStatus(this.id);">Root222</td>
    </tr>
    <tr>
        <td>&nbsp;</td>
        <td>
            <table>
            <tr>
                <td><input type="checkbox" name="chkMat2" id="chkMat21" parentId="chkBill2" value="chkMat21" onclick="checkedStatus(this.id);">Product111</td>
            </tr>
            <tr>
                <td><input type="checkbox" name="chkMat2" id="chkMat22" parentId="chkBill2" value="chkMat22" onclick="checkedStatus(this.id);">Product222</td>
            </tr>
            <tr>
                <td><input type="checkbox" name="chkMat2" id="chkMat23" parentId="chkBill2" value="chkMat23" onclick="checkedStatus(this.id);">Product333</td>
            </tr>
            </table>
        </td>
    </tr>
</table>
</BODY>
</HTML>
分享到:
评论

相关推荐

    js实现翻页后保持checkbox选中状态的实现方法

    项目中的分页使用真分页,每次...把选中的checkbox中的id,其中包括模块id,操作id,拼接成一个字符串,然后把字符串传递到action中。 每次调用此页面时,首选调用action中的选中的id字符串,然后根据在id字符串的基

    layui默认选中table的CheckBox复选框方法

    方法一:如何根据条件判断是否默认选中table表格前面的复选框 table.render({ elem: '#userTable' , url: '../sysRole/getUserList' , title: '用户列表' , page: true //开启分页 , cols: [[ {type:'...

    layui table中的列为checkbox 使layui中table表格中的列单元格显示为单选框checkbox

    在本文中,我们将深入探讨如何在layui框架中创建一个表格,其中某一列显示为复选框(checkbox),以便实现单选功能。layui是一款基于前端的轻量级组件库,提供了丰富的UI组件,包括表格(table)、按钮、表单元素等...

    CheckBox 选中效果 选中子的父自动选中,选中父的子全部选中

    - `checkAll(name)`: 当选中一个父项时,该函数会被触发,其作用是将所有名为`name`的子项CheckBox选中。 - `clearAll(name)`: 当取消选中父项时,该函数会清除所有同名子项CheckBox的选择状态。 - `checkSingle...

    简约时尚CSS样式,checkbox 全选或取消全选、或得到选中个数全案例使用详解

    这个案例演示了如何将上述理论应用于实际场景,如表格中`checkbox`的选择。 五、图片资源 "checked.png"和"unChecked.png"可能是用于自定义`checkbox`样式的图片资源。通过CSS的`background-image`属性将它们应用到...

    jquery获取checkbox选中的值

    在本文中,我们将深入探讨如何使用jQuery来获取checkbox选中的值,包括全选、取消全选、反选以及选中奇数行的操作,并讲解如何获取选中的值。 首先,我们需要引入jQuery库。在`1.html`文件中,我们看到包含了一个名...

    两层嵌套的checkbox记录选中状态

    在IT领域,尤其是在Android开发中,经常需要处理用户交互,比如多层嵌套的复选框(checkbox)的选中状态管理。这个场景通常出现在数据结构复杂,需要展示层次关系的时候,例如在ListView中嵌套一个Gridview,而...

    js获得Gridview中选中checkbox行的信息

    在网页开发中,GridView是一种常见的数据展示控件,它用于以表格形式展示数据,并提供了诸如分页、排序、筛选等功能。在JavaScript环境下,处理GridView的数据交互尤为重要,特别是当需要获取用户通过Checkbox选择的...

    隐藏layui数据表格表头的checkbox复选框

    ### 隐藏LayUI数据表格表头的Checkbox复选框方法详解 #### 背景介绍 在前端开发过程中,经常会使用到LayUI框架搭建网页应用,尤其是在设计复杂的数据展示界面时,LayUI提供了强大的数据表格功能。然而,在某些场景...

    实现table表格checkbox复选框的全选 反选

    在网页开发中,表格(Table)是常用的数据展示方式,而复选框(Checkbox)则为用户提供多选功能。在HTML的表格中实现复选框的全选与反选功能,能够大大提升用户体验,使用户可以便捷地选择一组数据。这里我们将详细...

    checkbox的全选与取消

    在网页设计中,复选框(Checkbox)是用户界面中不可或缺的一部分,它允许用户对多个选项进行选择。本文将深入探讨“复选框的全选与取消”这一主题,主要基于提供的HTML文件“checkbox.html”。全选和取消功能通常...

    BootStrap Table复选框默认选中功能的实现代码(从数据库获取到对应的状态进行判断是否为选中状态)

    它结合了Bootstrap框架的样式和JavaScript插件的功能,使表格更具吸引力和实用性。本篇将详细介绍如何在Bootstrap Table中实现复选框的默认选中功能,特别地,我们将根据从数据库获取的状态来决定复选框是否被选中。...

    解决Extjs当中复选框全选后,取消选中某一项,全选框仍是选中状态的问题

    然而,在实际应用中,我们可能会遇到一个问题:当实现全选功能后,如果尝试取消选中其中的一项,全选复选框仍然保持选中状态,这显然不符合用户的预期。本文将深入探讨这个问题,并提供解决方案。 首先,我们需要...

    layui动态禁用checkbox.rar

    本教程将深入探讨如何在layui的表格中动态禁用部分checkbox,并在全选操作时排除这些禁用的checkbox。 首先,我们需要了解layui table的基本用法。layui table可以通过JSON数据或Ajax异步加载数据,同时提供列定义...

    复选框选中表格中的行进行删除行操作

    在IT领域,尤其是在Web开发和用户界面设计中,"复选框选中表格中的行进行删除行操作"是一项常见的功能需求。这个功能主要用于提供用户友好的数据管理方式,让用户能够批量选择并处理表格中的数据。下面我们将详细...

    checkbox 选中一个另一个checkbox也会选中的实现代码

    在网页设计和开发中,`checkbox` 是一种常用的表单元素,用于用户进行多选操作。当需要实现“选中一个 `checkbox` 另一个也会被选中”的功能时,通常会涉及到事件监听和状态同步。这篇教程将详细介绍如何通过 ...

    checkbox的应用示例

    在IT领域,Checkbox(复选框)是一种常见的用户界面元素,广泛应用于网页、桌面应用程序以及移动应用中。Checkbox允许用户从多个选项中选择一个或多个,以表达他们的选择或者设置状态。本示例将深入探讨Checkbox的...

    layui table 复选框跳页后再回来保持原来选中的状态demo

    7. 代码优化:为了提高性能和用户体验,避免不必要的全表重新渲染,我们只对涉及到的行进行更新。 在提供的压缩包文件"layui-page-select-demo"中,应该包含了实现这一功能的示例代码。通过查看和学习这个示例,你...

    layui checkbox默认选中,获取选中值,清空所有选中项的例子

    在本文中,我们将深入探讨如何使用layui框架处理checkbox控件,包括如何设置默认选中、获取选中值以及清空所有选中项。layui是一款基于前端JavaScript库的模块化前端框架,提供了丰富的UI组件,包括表格、表单、按钮...

Global site tag (gtag.js) - Google Analytics