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()");
javascrip实现:若选中TreeView的父节点checkbox,则其子节点全部选中;子节点全部没选中,则父节点也会没选中。的更多相关文章
- Winform中如何实现父窗体传递数据到子窗体并刷新子窗体
原理:利用委托和事件,本文将以图文并茂的例子讲述,告诉我们So Easy --------------------------------------------------------------- ...
- winform里操作打开在panel里的form窗体,子窗体操作同级子窗体或者父窗体的方法
最近开始了一个winform项目,原先一直都是web项目.遇到个问题,就是在框架内,左侧和中间的main都是用panel来实现的form,就是把form窗体打开到panel里,实现左侧是导航,中间是操 ...
- 设置checkbox选中,设置radio选中,根据值设置checkbox选中,checkbox勾选
设置checkbox选中,设置radio选中,根据值设置checkbox选中,checkbox勾选 >>>>>>>>>>>>&g ...
- 父页面(JSP页面)传参数到子页面(JSP页面)
父页面(JSP页面)传参数到子页面(JSP页面) 1.父页面传参数到子页面 //JavaScript代码 $.ajax({ type:"POST", uri:"../st ...
- vue+elementUI项目,父组件向子组件传值,子组件向父组件传值,父子组件互相传值。
vue+elementUI项目,父组件向子组件传值,子组件向父组件传值,父子组件互相传值. vue 父组件与子组件相互通信 一.父组件给子组件传值 props 实现父组件向子组件传值. 1父组件里: ...
- jquery 添加与删除的规律 当要添加时候要定位到自己的父元素 当要删除时候 通过事件函数传入的this找到自己的父元素进行删除
jquery 添加与删除的规律 当要添加时候要定位到自己的父元素 当要删除时候 通过事件函数传入的this找到自己的父元素进行删除
- angular4父组件向子组件传值,子组件向父组件传值的方法
父组件向子组件传值 @Input 文件目录 父组件: father.template.html <h1>父组件</h1> <cmt-child [data]='dat ...
- 关于Vue父组件把异步获取的数据传给子组件的问题
由于父组件中的数据是异步获取的,而子组件在一开始便会渲染,所以会造成子组件渲染完成后,数据还未获取到的情况 这里有一个简单的解决方案:在子组件渲染前,判断父组件数据是否获取完成,数据获取完成后再渲染子 ...
- Vue最常用的组件通讯有三种:父->子组件通讯、子->父组件通讯,兄弟组件通讯.(template用的pug模板语法)
Vue组件通讯 Vue最常用的组件通讯有三种:父->子组件通讯.子->父组件通讯,兄弟组件通讯.(template用的pug模板语法) 1.父->子组件通讯 父->子组件通 ...
- 父元素a标签的href默认行为以及子元素绑定的click事件的响应之间存在影响
原文地址 背景 开发过程中遇到问题,简单写个demo 运行环境为Chrome 68 描述一下这个问题,当a标签内部存在嵌套时, 父元素a标签的href默认行为以及子元素绑定的click事件的响应之间存 ...
随机推荐
- JAVA课程设计--------五子棋
1.团队课程设计博客链接 http://www.cnblogs.com/mz201521044152/p/7065575.html 2.个人负责模块或任务说明 1.重新开始:写一个restartgam ...
- 在dropwizard中使用feign,使用hystrix
前言 用惯了spring全家桶之后,试试dropwizard的Hello World也别有一帆风味.为了增强对外访问API的能力,需要引入open feign.这里简单在dropwizard中使用fe ...
- hdu 6197 array array array
array array array Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others ...
- 04面向对象编程-01-创建对象 和 原型理解(prototype、__proto__)
1.JS中对象的"不同":原型概念 从Java中我们可以很好地去理解 "类" 和 "实例" 两个概念,可是在JavaScript中,这个概念 ...
- Azure ARM (16) 基于角色的访问控制 (Role Based Access Control, RBAC) - 使用默认的Role
<Windows Azure Platform 系列文章目录> 今天上午刚刚和客户沟通过,趁热打铁写一篇Blog. 熟悉Microsoft Azure平台的读者都知道,在老的Classic ...
- Flask-WTF 入门使用P1
创建表单 Flask-WTF为您的Flask应用程序集成了WTForms,具体例子如下: from flask_wtf import FlaskForm from wtforms import Str ...
- jQuery基礎知識
jQuery基礎知識 $(function(){}) //jQuery先執行一遍再執行其他函數 $(document).ready(fn) //文檔加載完後觸發 1. 刪除$:jQuery.noCon ...
- 快速学会require的使用
快速学会使用require.js 1.get start 先到官网下载requirejs到本地,官方同时提供Node版本r.js,我们只使用requirejs即可. 接下来在页面上写入 <scr ...
- 线段树+RMQ问题第二弹
线段树+RMQ问题第二弹 上篇文章讲到了基于Sparse Table 解决 RMQ 问题,不知道大家还有没有印象,今天我们会从线段树的方法对 RMQ 问题再一次讨论. 正式介绍今天解决 RMQ 问题的 ...
- 15 Validation
一.模型选择问题 如何选择? 视觉上 NO 不是所有资料都能可视化;人脑模型复杂度也得算上 通过Ein NO 容易过拟合;泛化能力差 通过Etest NO 能保证好的泛化,不过往往没法提前获得测试资料 ...