//===============================
//
作用:选中节点对象
//
参数:
nobj node
对象
// cobj checkbox
对象
//===============================
dTree.prototype.checkNode = function(id,pid,_hc,checked) {
//1
、递归选父节点对象(无论是叶节点还是中间节点)
//
判断同级中有无被选中的,如果有选中的就不可以反选
if(!this.isHaveBNode(id,pid)){
if(checked){
//
选中就一直选到根节点
this.checkPNodeRecursion(pid,checked);
}else{
//
去掉选中仅将其父节点去掉选中
this.checkPNode(pid,checked);
}
}
//2
、如果是中间结点,具有儿子,递归选子节点对象
if(_hc)
this.checkSNodeRecursion(id,checked);
}
//===============================
//
作用:判断同级中有无被选中的
//
参数:
id
节点
id
// pid
节点的父节点
id
//===============================
dTree.prototype.isHaveBNode = function(id,pid) {
var isChecked = false
for (var n=0; n<this.aNodes.length; n++) {
//
不是节点自身、具有同父节点兄弟节点
if (this.aNodes[n].pid!=-1&&this.aNodes[n].id!=id&&this.aNodes[n].pid == pid) {
if(eval("document.all."+ this.aNodes[n].cname + "_" + this.aNodes[n].id + ".checked"))
isChecked = true;
}
}
return isChecked;
};
//===============================
//
作用:递归选中父节点对象
//
参数:
pid
节点的父节点
id
// ischecked
是否被选中
//===============================
dTree.prototype.checkPNodeRecursion = function(pid,ischecked) {
for (var n=0; n<this.aNodes.length; n++) {
if (this.aNodes[n].pid!=-1&&this.aNodes[n].id == pid) {
eval("document.all."+ this.aNodes[n].cname + "_" + this.aNodes[n].id + ".checked = " + ischecked);
this.checkPNodeRecursion(this.aNodes[n].pid,ischecked);
break;
}
}
};
//===============================
//
作用:递归选中子节点对象
//
参数:
id
节点
id
// ischecked
是否被选中
//===============================
dTree.prototype.checkSNodeRecursion = function(id,ischecked) {
for (var n=0; n<this.aNodes.length; n++) {
if (this.aNodes[n].pid!=-1&&this.aNodes[n].pid == id) {
eval("document.all."+ this.aNodes[n].cname + "_" + this.aNodes[n].id + ".checked = " + ischecked);
this.checkSNodeRecursion(this.aNodes[n].id,ischecked);
}
}
};
//===============================
//
作用:仅选中父节点对象
//
参数:
pid
节点的父节点
id
// ischecked
是否被选中
//===============================
dTree.prototype.checkPNode = function(pid,ischecked) {
for (var n=0; n<this.aNodes.length; n++) {
if (this.aNodes[n].pid!=-1&&this.aNodes[n].id == pid) {
eval("document.all."+ this.aNodes[n].cname + "_" + this.aNodes[n].id + ".checked = " + ischecked);
break;
}
}
};
|