zoukankan      html  css  js  c++  java
  • javascrip实现:若选中TreeView的父节点checkbox,则其子节点全部选中;子节点全部没选中,则父节点也会没选中。

        <script type="text/javascript">
            function public_GetParentByTagName(element, tagName) {
                var parent = element.parentNode;
                var upperTagName = tagName.toUpperCase();
                //如果这个元素还不是想要的tag就继续上溯
                while (parent && (parent.tagName.toUpperCase() != upperTagName)) {
                    parent = parent.parentNode ? parent.parentNode : parent.parentElement;
                }
                return parent;
            }
    
            //设置节点的父节点Cheched——该节点可访问,则他的父节点也必能访问 
            function setParentChecked(objNode) {
                var objParentDiv = public_GetParentByTagName(objNode, "div");
                if (objParentDiv == null || objParentDiv == "undefined") {
                    return;
                }
                var objID = objParentDiv.getAttribute("ID");
                objID = objID.substring(0, objID.indexOf("Nodes"));
                objID = objID + "CheckBox";
                var objParentCheckBox = document.getElementById(objID);
                if (objParentCheckBox == null || objParentCheckBox == "undefined") {
                    return;
                }
                if (objParentCheckBox.tagName != "INPUT" && objParentCheckBox.type == "checkbox")
                    return;
                objParentCheckBox.checked = true;
                setParentChecked(objParentCheckBox);
            }
    
            function setParentUnChecked(objNode) {
                var objParentDiv = public_GetParentByTagName(objNode, "div");
                if (objParentDiv == null || objParentDiv == "undefined") {
                    return;
                }
                var objID = objParentDiv.getAttribute("ID");
                objID = objID.substring(0, objID.indexOf("Nodes"));
                objID = objID + "CheckBox";
                var objParentCheckBox = document.getElementById(objID);
                if (objParentCheckBox == null || objParentCheckBox == "undefined") {
                    return;
                }
                if (objParentCheckBox.tagName != "INPUT" && objParentCheckBox.type == "checkbox")
                    return;
                objParentCheckBox.checked = GetChildUnChecked(objParentDiv);
                setParentUnChecked(objParentCheckBox);
            }
    
            function GetChildUnChecked(divID) {
                var objchild = divID.getElementsByTagName("INPUT");
                var count = objchild.length;
                for (var i = 0; i < objchild.length; i++) {
                    var tempObj = objchild[i];
                    if (tempObj.type == "checkbox") {
                        if (tempObj.checked == true) return true;
                    }
                }
                return false;
            }
            
            //设置节点的子节点cheched——该节点可以访问,则他的子节点也都能或不能访问 
            function setChildChecked(divID, objNode) {
                var objchild = divID.getElementsByTagName("INPUT"); ;
                var count = objchild.length;
                for (var i = 0; i < objchild.length; i++) {
                    var tempObj = objchild[i];
                    if (tempObj.type == "checkbox") {
                        tempObj.checked = objNode.checked;                    
                    }
                }
            }
            function CheckEvent() {
    
                var objNode = event.srcElement;
    
                if (objNode.tagName != "INPUT" || objNode.type != "checkbox")
                    return;
    
                if (objNode.checked == true) {
                    setParentChecked(objNode);
                    var objID = objNode.getAttribute("ID");
                    var objID = objID.substring(0, objID.indexOf("CheckBox"));
                    var objParentDiv = document.getElementById(objID + "Nodes");
                    if (objParentDiv != null && objParentDiv != "undefined") {
                        setChildChecked(objParentDiv, objNode);
                    }
                }
                else {
                    setParentUnChecked(objNode);
                    var objID = objNode.getAttribute("ID");
                    var objID = objID.substring(0, objID.indexOf("CheckBox"));
                    var objParentDiv = document.getElementById(objID + "Nodes");
                    if (objParentDiv != null && objParentDiv != "undefined") {
                        setChildChecked(objParentDiv, objNode);
                    }
                }
    
            }
        </script>


    this.tvlist.Attributes.Add("onclick", "CheckEvent()");

  • 相关阅读:
    世界上最快的排序算法——Timsort
    十二种排序包你满意(冒泡、插入、归并、快速排序等包含希尔和计数排序)
    二叉树遍历方法大全(包含莫里斯遍历)
    Nginx知多少系列之(一)前言
    .NET Core项目部署到Linux(Centos7)(一)前言
    Nginx知多少系列之(十四)Linux下.NET Core项目Nginx+Keepalived高可用(主从模式)
    Nginx知多少系列之(七)负载均衡策略
    Nginx知多少系列之(六)Linux下.NET Core项目负载均衡
    Nginx知多少系列之(五)Linux下托管.NET Core项目
    Nginx知多少系列之(四)工作原理
  • 原文地址:https://www.cnblogs.com/caiyt/p/3208232.html
Copyright © 2011-2022 走看看