转:treeview checkbox js 无限极级联选择 方案
2011-02-18 10:56
561 查看
代码 <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>
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>
相关文章推荐
- js实现checkbox级联选择
- treeview控件中的checkbox级联选择
- TreeView中使用checkBox时子节点和父节点的级联选择
- 使用JS控制treeview上面checkbox的选择
- treeview绑定到关系数据源,生成树,并实现checkbox的级联选择
- C#中TreeView的CheckBox的两种级联选择
- 用JS实现VS2005 TreeView的checkBox的父子节点级联----取自YYControls
- 解决treeview的checkbox级联选择
- TreeView 控件 Checkbox 级联选择
- 解决asp.net 2.0 中treeview的checkbox级联选择
- treeview_ checkbox中选择的js代码 和 层移动代码
- 用JS脚本实现CheckBoxList只能选择其中的两个
- JS 控制checkbox 获取 全选 全不选 一行不选择全选则不被选择 所有选择全选被选择
- ASP.NET 2.0 TreeView中用JavaScript实现选择子接点CheckBox是自动选择上父节点(或者所有父节点)
- js查询checkbox已选择的值
- TreeView CheckBox级联选中
- js 省地市级联选择
- treeview checkbox选中的时候选择子节点 mvvm
- js操作TreeView的checkbox
- 最简单的Asp.Net 2.0 TreeView的Checkbox级联操作