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

javascrip实现:若选中TreeView的父节点checkbox,则其子节点全部选中;子节点全部没选中,则父节点也会没选中。的更多相关文章

  1. Winform中如何实现父窗体传递数据到子窗体并刷新子窗体

    原理:利用委托和事件,本文将以图文并茂的例子讲述,告诉我们So Easy --------------------------------------------------------------- ...

  2. winform里操作打开在panel里的form窗体,子窗体操作同级子窗体或者父窗体的方法

    最近开始了一个winform项目,原先一直都是web项目.遇到个问题,就是在框架内,左侧和中间的main都是用panel来实现的form,就是把form窗体打开到panel里,实现左侧是导航,中间是操 ...

  3. 设置checkbox选中,设置radio选中,根据值设置checkbox选中,checkbox勾选

    设置checkbox选中,设置radio选中,根据值设置checkbox选中,checkbox勾选 >>>>>>>>>>>>&g ...

  4. 父页面(JSP页面)传参数到子页面(JSP页面)

    父页面(JSP页面)传参数到子页面(JSP页面) 1.父页面传参数到子页面 //JavaScript代码 $.ajax({ type:"POST", uri:"../st ...

  5. vue+elementUI项目,父组件向子组件传值,子组件向父组件传值,父子组件互相传值。

    vue+elementUI项目,父组件向子组件传值,子组件向父组件传值,父子组件互相传值. vue 父组件与子组件相互通信 一.父组件给子组件传值 props 实现父组件向子组件传值. 1父组件里: ...

  6. jquery 添加与删除的规律 当要添加时候要定位到自己的父元素 当要删除时候 通过事件函数传入的this找到自己的父元素进行删除

    jquery 添加与删除的规律 当要添加时候要定位到自己的父元素  当要删除时候 通过事件函数传入的this找到自己的父元素进行删除

  7. angular4父组件向子组件传值,子组件向父组件传值的方法

    父组件向子组件传值   @Input 文件目录 父组件: father.template.html <h1>父组件</h1> <cmt-child [data]='dat ...

  8. 关于Vue父组件把异步获取的数据传给子组件的问题

    由于父组件中的数据是异步获取的,而子组件在一开始便会渲染,所以会造成子组件渲染完成后,数据还未获取到的情况 这里有一个简单的解决方案:在子组件渲染前,判断父组件数据是否获取完成,数据获取完成后再渲染子 ...

  9. Vue最常用的组件通讯有三种:父->子组件通讯、子->父组件通讯,兄弟组件通讯.(template用的pug模板语法)

    Vue组件通讯   Vue最常用的组件通讯有三种:父->子组件通讯.子->父组件通讯,兄弟组件通讯.(template用的pug模板语法) 1.父->子组件通讯 父->子组件通 ...

  10. 父元素a标签的href默认行为以及子元素绑定的click事件的响应之间存在影响

    原文地址 背景 开发过程中遇到问题,简单写个demo 运行环境为Chrome 68 描述一下这个问题,当a标签内部存在嵌套时, 父元素a标签的href默认行为以及子元素绑定的click事件的响应之间存 ...

随机推荐

  1. Mybatis第三篇【动态SQL】

    动态SQL 何为动态SQL??回顾一下我们之前写的SSH项目中,有多条件查询的情况,如下图 我们当时刚开始做的时候,是需要在Controller中判断SQL是否已经有条件了,因为SQL语句需要拼接起来 ...

  2. 来自projecteuler.net网站的练习题2

    0.题目如下: Each new term in the Fibonacci sequence is generated by adding the previous two terms. By st ...

  3. springmvc返回枚举属性值

    使用fastJSON ,在枚举中写toString 方法 如下@Overridepublic String toString() {return "{" + this.name() ...

  4. yum软件管理器,及yum源配置

    说到yum源就必须说到linux系统中特有的依赖关系问题,yum就是为了解决依赖关系而存在的.yum源就相当是一个目录项,当我们使用yum机制安装软件时,若需要安装依赖软件,则yum机制就会根据在yu ...

  5. bzoj1036 [ZJOI2008]树的统计

    一棵树上有n个节点,编号分别为1到n,每个节点都有一个权值w.我们将以下面的形式来要求你对这棵树完成一些操作: I. CHANGE u t : 把结点u的权值改为t II. QMAX u v: 询问从 ...

  6. HIT 1917 Peaceful Commission

    这道题题意就是给你n对人,一对中编号为x,x+1,给你m对矛盾,表示这两个人不能同时选. 然后就是Two-Sat的模板题了,就是根据对称性,连边,加缩点,最后拓扑排序,求出一组可行解就可以了. #in ...

  7. Detect Capital

    Given a word, you need to judge whether the usage of capitals in it is right or not. We define the u ...

  8. Hadoop(四)HDFS集群详解

    前言 前面几篇简单介绍了什么是大数据和Hadoop,也说了怎么搭建最简单的伪分布式和全分布式的hadoop集群.接下来这篇我详细的分享一下HDFS. HDFS前言: 设计思想:(分而治之)将大文件.大 ...

  9. zoj 1874 水题,输出格式大坑

    Primary Arithmetic Time Limit: 2 Seconds      Memory Limit: 65536 KB Children are taught to add mult ...

  10. 关于TileBrush中Viewbox,Viewport以及Stretch,AlignmentX/Y的详细研究

    我们知道TileBrush是WPF中一个战斗力爆表的虚基类,从它派生出的DrawingBrush,ImageBrush和VisualBrush在WPF图形编程中发挥着重要作用.然而关于TileBrus ...