调了 好几天的问题 treeview 的js 处理复选框之间的关系,选中子框父框自动选中,单独执行 没问题 放到框架页里 就有问题
刚开始的js 这么写的
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;
}
}
}
OnTreeNodeChildChecked(ele);
}
}
function OnTreeNodeChildChecked(ele) {
//自动处理上级
var parentDiv = ele.parentElement.parentElement.parentElement.parentElement.parentElement;
var parentChkBox = document.getElementById(parentDiv.id.replace('Nodes', 'CheckBox'));
if (parentChkBox != null) {
var ChildsChkAll = true;
var Boxs = parentDiv.getElementsByTagName('INPUT');
var m = 0;
var n = 0;
for (var i = 0; i < Boxs.length; i++) {
if (Boxs[i].type == 'checkbox') {
m++;
}
if (Boxs[i].type == 'checkbox' && Boxs[i].checked == false) {
n++
}
}
if (m == n) {
ChildsChkAll = false;
}
parentChkBox.checked = ChildsChkAll;
OnTreeNodeChildChecked(parentChkBox);
}
}
}
然后 加了个catch 就完事了
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; } } } OnTreeNodeChildChecked(ele); } } function OnTreeNodeChildChecked(ele) { //自动处理上级 try { var parentDiv = ele.parentElement.parentElement.parentElement.parentElement.parentElement; var parentChkBox = document.getElementById(parentDiv.id.replace('Nodes', 'CheckBox')); if (parentChkBox != null) { var ChildsChkAll = true; var Boxs = parentDiv.getElementsByTagName('INPUT'); var m = 0; var n = 0; for (var i = 0; i < Boxs.length; i++) { if (Boxs[i].type == 'checkbox') { m++; } if (Boxs[i].type == 'checkbox' && Boxs[i].checked == false) { n++ } } if (m == n) { ChildsChkAll = false; } parentChkBox.checked = ChildsChkAll; OnTreeNodeChildChecked(parentChkBox); } } catch(e) { } }
浙公网安备 33010602011771号