2019独角兽企业重金招聘Python工程师标准>>>

<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>

------------------------------------cs

tv_rights.Attributes.Add("onclick", "OnTreeNodeChecked()");

就OK啦

转载于:https://my.oschina.net/kaiyuandewo/blog/16469

js实现treeview 级联修改状态相关推荐

  1. html双击变成可编辑状态,JS实现双击编辑可修改状态的方法

    本文实例讲述了JS实现双击编辑可修改状态的方法.分享给大家供大家参考.具体如下: 这是现在流行的一个表单特效,在网页上单击某文字,文字变为编辑状态,或者是让输入新文字,这就是JavaScript控制表 ...

  2. Vuex-一个专为 Vue.js 应用程序开发的状态管理模式

    为什么会出现Vuex 非父子关系的组件如何进行通信?(Event Bus) bus.js import Vue from 'vue'; export default new Vue(); foo.vu ...

  3. 在ReactJS中正确修改状态数组

    本文翻译自:Correct modification of state arrays in ReactJS I want to add an element to the end of a state ...

  4. 关于级联删除和级联修改

    曾经因为级联删除的问题浪费了N多时间,顾此在这里写下小小心得,供大家借鉴. 在数据库分别建立表t_food(菜单)和表t_book(订单),如下所示: t_food: ---------------- ...

  5. php 修改input内容,JS简单获取并修改input文本框内容的方法示例

    这篇文章主要介绍了JS简单获取并修改input文本框内容的方法,结合实例形式分析了JavaScript针对页面元素的获取.赋值等相关操作技巧,需要的朋友可以参考下 本文实例讲述了JS简单获取并修改in ...

  6. vmware“增强型虚拟键盘”键呈灰色不能修改状态

    背景信息: 版 本:VMware-workstation-full-11.0.0-2305329.1418091545.exe 虚拟机:Ubuntu 64位 系统(ubuntu-16.04-deskt ...

  7. js下载文件并修改文件名 / js判断文件后缀

    js下载文件并修改文件名 / js判断文件后缀 代码如下(示例): //handlerName:文件名 filePath:下载路径downloadFile (handlerName, filePath ...

  8. 如何设置textarea文本框中的内容为只读不可修改状态

    设置<textarea>文本框中的内容为只读不可修改状态,只需要加入disabled或readonly即可 <textarea name="qualification&qu ...

  9. js 页面跳转保存状态

    为什么80%的码农都做不了架构师?>>>    很多时候需要使用js 实现页面跳转之后记住当前的状态 <div class="fy_l_list">& ...

最新文章

  1. 【LaTeX】E喵的LaTeX新手入门教程(6)中文
  2. 如何解决IIS7上传文件大小限制【转】
  3. 一步步学习微软InfoPath2010和SP2010--第十三章节--SharePoint视图和仪表板(4)--基于视图的通知...
  4. [转] 以 async/await 为例,说明 babel 插件怎么搭
  5. 华为C8825D刷机失败解决方法
  6. 苹果隐私部门负责人:在iPhone上侧载应用会减少用户选择
  7. 银辉给园子里的兄弟姐妹们拜年啦
  8. Linux 安装Nginx详细图解教程
  9. 57. mysqli 扩展库(4)
  10. from .import xxx什么意思
  11. Hadoop集群配置(二)免密登录和集群配置
  12. 番茄花园GHOST SP3无法安装IIS 信息服务的解决方法
  13. 细数历史上那些有名的程序媛
  14. 江苏工匠杯easyphp
  15. linux授权文件夹777,服务器上如何修改文件夹777权限
  16. 鸿洋,郭霖Android开发大牛:从入门到精通系列学习路线以及进阶Android高级工程师书籍介绍
  17. ROS--Kinetic--执行roslaunch时遇到的问题和解决办法
  18. 关闭oracle job定时任务,oracle job 定时任务,定时执行
  19. 地铁3D可视化,让一切尽在掌握
  20. Dcat-Admin自定义Excel数据导出

热门文章

  1. Node的textContent属性
  2. java实验常见错误_java 实验4 异常
  3. python拆分合并文件_python实现文件的分割与合并
  4. c++ windows forms 使用_从头开始了解和使用Hypervisor(第1部分)
  5. 小度智能音箱维修点_小度智能音箱——联通智慧生活语音服务入口
  6. linux path原理,面试题:Linux中的环境变量PATH
  7. clickhouse的kafka表引擎 +接口表
  8. SBUS2,一个增强型的SBUS协议,可实现双向通讯功能。SBUS2和SBUS区别到底在哪呢?
  9. [转]VB中资源文件.res的使用方法详解
  10. vb以类名或窗口标题查找句柄并关闭