无刷新联动树控件treeview

本文介绍了一种使用JavaScript实现的无刷新页面更新复选框状态的方法。该方法能够递归地检查并更新表格中所有子级和父级复选框的状态,确保其一致性。此外,还提供了一个用于获取已选中子项数量的功能。
<script language="javascript" type="text/javascript">
    //无刷新
        function HandleCheckbox() {
            var element = event.srcElement;
            if (element.tagName == "INPUT" && element.type == "checkbox") {
                var checkedState = element.checked;
                while (element.tagName != "TABLE") // Get wrapping table               
                {
                    element = element.parentElement;
                }
                var parentElement = element;

                if (checkedState) {
                    CheckParents(element);
                }

                element = element.nextSibling; //element.tagName = DIV 

                if (element != null) // If no childrens then exit 
                {
                    var childTables = element.getElementsByTagName("TABLE");

                    for (var tableIndex = 0; tableIndex < childTables.length; tableIndex++) {
                        CheckTable(childTables[tableIndex], checkedState);
                    }
                }
                if (checkedState == false) {
                    UnCheckParents(parentElement);
                }

            }
        }

        // Uncheck the parents of the given table, Can remove the recurse (redundant) 
        function CheckParents(table) {
            if (table == null || table.rows[0].cells.length == 2) // This is the root 
            {
                return;
            }
            var parentTable = table.parentElement.previousSibling;
            CheckTable(parentTable, true);
            CheckParents(parentTable);
        }

        // Check the parents of the given table, Can remove the recurse (redundant) 
        function UnCheckParents(table) {

            if (table == null || table.rows[0].cells.length == 2) // This is the root  
            {
                return;
            }
            var parentTable = table.parentElement.previousSibling;

            var checkedCount = GetCheckedCount(table.parentElement);
            if (checkedCount == 0) {
                CheckTable(parentTable, false);
            }
            UnCheckParents(parentTable);
        }

        // Handle the set of checkbox checked state                                    
        function CheckTable(table, checked) {
            var checkboxIndex = table.rows[0].cells.length - 1;
            var cell = table.rows[0].cells[checkboxIndex];
            var checkboxes = cell.getElementsByTagName("INPUT");
            if (checkboxes.length == 1) {
                checkboxes[0].checked = checked;
            }

        }
        //Get checked children count
        function GetCheckedCount(table) {
            var checkedCount = 0;
            var element = table.nextSibling;
            var childTable = table.getElementsByTagName("TABLE");

            for (var tableIndex = 0; tableIndex < childTable.length; tableIndex++) {
                var childTables = childTable[tableIndex];
                var checkboxIndex = childTables.rows[0].cells.length - 1;
                var cell = childTables.rows[0].cells[checkboxIndex];
                var checkboxes = cell.getElementsByTagName("INPUT");
                if (checkboxes.length == 1 && checkboxes[0].checked == true) {
                    checkedCount++;
                }
            }
            return checkedCount;
        }                                                                            
 </script>

 

转载于:https://www.cnblogs.com/yuan2013/p/3456246.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值