zoukankan      html  css  js  c++  java
  • 转:treeview checkbox js 无限极级联选择 方案

    代码
       <script type="text/javascript">

            
    function OnTreeNodeChecked() {
                
    var ele = event.srcElement;
                
    if (ele.type == 'checkbox') {
                    
    var childrenDivID = ele.id.replace('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')
                                checkBoxs[i].checked 
    = ele.checked;
                        }
                        
    var div = GetParentByTagName(ele, 'DIV');
                        
    var checkBoxs = div.getElementsByTagName('INPUT');
                        
    var parentCheckBoxID = div.id.replace('Nodes''CheckBox');
                        
    var parentCheckBox = document.getElementById(parentCheckBoxID);
                        
    for (var i = 0; i < checkBoxs.length; i++) {
                            
    if (checkBoxs[i].type == 'checkbox' && checkBoxs[i].checked) {
                                parentCheckBox.checked 
    = true;
                                
    return;
                            }
                        }
                        parentCheckBox.checked 
    = false;
                    }
                    
    else {
                        
    var div = GetParentByTagName(ele, 'DIV');
                        
    var checkBoxs = div.getElementsByTagName('INPUT');
                        
    var parentCheckBoxID = div.id.replace('Nodes''CheckBox');
                        
    var parentCheckBox = document.getElementById(parentCheckBoxID);

                        
    var basediv = GetParentByTagName(parentCheckBox, 'DIV');
                        
    var parentCBKs = basediv.getElementsByTagName('INPUT');
                        
    var baseCheckBoxID = basediv.id.replace('Nodes''CheckBox');
                        
    var baseCheckBox = document.getElementById(baseCheckBoxID);

                        
    for (var i = 0; i < checkBoxs.length; i++) {
                            
    if (checkBoxs[i].type == 'checkbox' && checkBoxs[i].checked) {
                                parentCheckBox.checked 
    = true;
                                
    for (var j = 0; j < parentCBKs.length; j++) {
                                    
    if (parentCBKs[j].type == 'checkbox' && parentCBKs[j].checked) {
                                        baseCheckBox.checked 
    = true;
                                    }
                                }
                                
    return;
                            }
                        }
                        parentCheckBox.checked 
    = false;
                        
    var checkedcount = 0;
                        
    for (var j = 0; j < parentCBKs.length; j++) {
                            
    if (parentCBKs[j].type == 'checkbox' && parentCBKs[j].checked) {
                                checkedcount
    ++;
                            }
                        }
                        
    if (checkedcount == 0) {
                            baseCheckBox.checked 
    = false;
                        }
                    }

                }
            }

            
    function GetParentByTagName(element, tagName) {
                
    var parent = element.parentNode;
                
    var upperTagName = tagName.toUpperCase();
                
    while (parent && (parent.tagName.toUpperCase() != upperTagName)) {
                    parent 
    = parent.parentNode ? parent.parentNode : parent.parentElement;
                }
                
    return parent;
            } 
        
    </script>
  • 相关阅读:
    44 软件开发中的一些思考
    43 编译原理及cmake使用手册学习
    42 github 开源代码 ——README.md语法/相关操作等
    41 软件工程实施-以数字化测量系统为例
    40 VSCode下.json文件的编写——(1) linux/g++ (2).json中参数与预定义变量的意义解释
    css3 3D盒子效果
    css3实现无缝滚动效果
    js一些方法的扩展
    扩展原生js的一些方法
    递归
  • 原文地址:https://www.cnblogs.com/wantingqiang/p/1957607.html
Copyright © 2011-2022 走看看