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()");

  • 相关阅读:
    基于tensorflow的MNIST手写数字识别(二)--入门篇
    怎么自行HTTP的POST包头,需要使用json
    本地数据库(SQL Server)远程连接服务器端服务器
    在 Visual Studio 2010 中创建 ASP.Net Web Service
    VMware加载vmdk文件
    Android典型界面设计(5)——使用SlidingMenu和DrawerLayout分别实现左右侧边栏
    FatSecret Platform API
    Android典型界面设计(4)——使用ActionBar+Fragment实现tab切换
    IOS UITableView删除功能
    Android GUI之View测量
  • 原文地址:https://www.cnblogs.com/caiyt/p/3208232.html
Copyright © 2011-2022 走看看