//===============================
//
作用:選中節(jié)點(diǎn)對(duì)象
//
參數(shù):
nobj node
對(duì)象
//????? cobj checkbox
對(duì)象
//===============================
dTree.prototype.checkNode = function(id,pid,_hc,checked) {
??? //1
、遞歸選父節(jié)點(diǎn)對(duì)象(無論是葉節(jié)點(diǎn)還是中間節(jié)點(diǎn))
??? //
判斷同級(jí)中有無被選中的,如果有選中的就不可以反選
??? if(!this.isHaveBNode(id,pid)){
??????? if(checked){
??????????? //
選中就一直選到根節(jié)點(diǎn)
??????????? this.checkPNodeRecursion(pid,checked);
??????? }else{
??????????? //
去掉選中僅將其父節(jié)點(diǎn)去掉選中
??????????? this.checkPNode(pid,checked);
??????? }
??? }??
???
??? //2
、如果是中間結(jié)點(diǎn),具有兒子,遞歸選子節(jié)點(diǎn)對(duì)象
?????
??? if(_hc)????
??????? this.checkSNodeRecursion(id,checked);
???
}
?
//===============================
//
作用:判斷同級(jí)中有無被選中的
//
參數(shù):
id
節(jié)點(diǎn)
id
//????? pid
節(jié)點(diǎn)的父節(jié)點(diǎn)
id
//===============================
dTree.prototype.isHaveBNode = function(id,pid) {???
??? var isChecked = false
??? for (var n=0; n<this.aNodes.length; n++) {
??????? //
不是節(jié)點(diǎn)自身、具有同父節(jié)點(diǎn)兄弟節(jié)點(diǎ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;
};
?
//===============================
//
作用:遞歸選中父節(jié)點(diǎn)對(duì)象
//
參數(shù):
pid
節(jié)點(diǎn)的父節(jié)點(diǎn)
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;
??????? }
??? }
};
?
//===============================
//
作用:遞歸選中子節(jié)點(diǎn)對(duì)象
//
參數(shù):
id
節(jié)點(diǎn)
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);?????????
??????? }
??? }
};
?
//===============================
//
作用:僅選中父節(jié)點(diǎn)對(duì)象
//
參數(shù):
pid
節(jié)點(diǎn)的父節(jié)點(diǎn)
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;
??????? }
??? }
};
|