zoukankan      html  css  js  c++  java
  • 重修理解了一下js 控制treeview 菜单的子级和父级的关系 理解的还不够全 因为 html不够全 但是加个注释吧

     function OnTreeNodeChecked() {
                var ele = event.srcElement;//获得事件的所有属性
                if (ele.type == 'checkbox') //判断事件的type是否是checkbox
                {
                    var childrenDivID = ele.id.replace('CheckBox', 'Nodes');//事件的id中checkbox用nodes代替
                    var div = document.getElementById(childrenDivID);
                    if (div != null) //判断是否有子集
                    {
                        var checkBoxs = div.getElementsByTagName('INPUT');//获得所有的子集
                        for (var i = 0; i < checkBoxs.length; i++) 
                        {
                            if (checkBoxs[i].type == 'checkbox')//判断其type是否为checkbox 
                            {
                                checkBoxs[i].checked = ele.checked;//将子集的checkbox状态设定为何父级的checkbox的状态一致
                            }
                        }
                    }
                    OnTreeNodeChildChecked(ele);
    
                }
            }
            function OnTreeNodeChildChecked(ele) {
                //自动处理上级 
                try {
                    var parentDiv = ele.parentElement.parentElement.parentElement.parentElement.parentElement;//获得其id
    
                    var parentChkBox = document.getElementById(parentDiv.id.replace('Nodes', 'CheckBox'));
                    if (parentChkBox != null) //和上面那句判断是否有父级
                    {
                        var ChildsChkAll = true;//设置一个变量 为true
                        var Boxs = parentDiv.getElementsByTagName('INPUT');
                        var m = 0;
                        var n = 0;
                        for (var i = 0; i < Boxs.length; i++) {
    
                            if (Boxs[i].type == 'checkbox') {
                                m++;
                            }
                            if (Boxs[i].type == 'checkbox' && Boxs[i].checked == false) {
                                n++
                            }
                        }
                        if (m == n)//判断同级中是否都未选中 
                        {
    
                            ChildsChkAll = false;
                        }
                        parentChkBox.checked = ChildsChkAll; //父级的选中状态为ChildsChkAll
                        OnTreeNodeChildChecked(parentChkBox);
                    }
                }
                catch (e) {
    
    
                }
            } 
  • 相关阅读:
    程序猿之歌
    How to solve the problem : &quot;You have been logged on with a temporary profile&quot;
    LeetCode Jump Game
    hdu 3496 Watch The Movie
    matlab矩阵内存预分配
    【Windows socket+IP+UDP+TCP】网络基础
    <html>
    行为类模式(十):模板方法(Template Method)
    行为类模式(九):策略(Strategy)
    行为类模式(八):状态(State)
  • 原文地址:https://www.cnblogs.com/haihang/p/2796452.html
Copyright © 2011-2022 走看看