function GroupVisible(){
var rootID=IInformation.FindItem("0");
var a=IInformation.GetNextItem(rootID,11);//寻找子项的id号码。
var boolVisible=IInformation.GetGroupVisibility(a);//子项可视性的返回值
if(boolVisible==1){
//如果之前的全部可视,则变为隐藏。同时按钮的值为可见。
IInformation.SetGroupVisibility(IInformation.FindItem("0"),false);
window.document.getElementById("btn3").value="可见";
}
else{
IInformation.SetGroupVisibility(IInformation.FindItem("0"),true);
window.document.getElementById("btn3").value="隐藏";
}
}
//遍历信息树的方法。
function InformationVist(){
var groupID = IInformation.GetNextItem(0, 11);
if (groupID == 0)
{
alert("信息树中无对象!");
return 0;
}
else
InformationAll(groupID);
}
function InformationAll(groupID)
{
var a,b,c;
if (groupID == 0)//这个判断多余,之前以及判断了
return 0;
else{
b = confirm(IInformation.GetItemName(groupID)+"__ID:"+groupID);
//若取消,则不进行信息树遍历
if(b == false)
{
return 0;
}
a = groupID;
//遍历子节点ID号
groupID = IInformation.GetNextItem(groupID,11);//子节点
//如果有子节点,则嵌套循环该方法,没有则寻找同级节点
if(groupID == 0){
groupID = IInformation.GetNextItem(a,13);//同级的下一个节点
//同级节点存在时,执行嵌套。没有时寻找父级节点
if(groupID == 0){
groupID = IInformation.GetNextItem(a,15);//父级节点
c = groupID;
groupID = IInformation.GetNextItem(c,13);
//父级节点的同级节点存在,则嵌套,不存在,则寻找父级节点的父级节点
while(groupID == 0 ){
groupID = IInformation.GetNextItem(c,15);
groupID = IInformation.GetNextItem(groupID,13);
if (groupID == 0)
return 0;
} //退出while循环
}//退出if判断
} //退出if判断
InformationAll(groupID);
}
}
通过该方法的编写得知: 嵌套方法的编写时,满足条件的需要一直嵌套,剩下的工作就是一直寻找所有枝干中 不满足条件的情况。另外注意,该分支不满足条件时,需要找其相邻枝干是否满足条件,相邻枝干再不满足条件,就需要寻找父级的情况,如果父级的情况还不满足条件,则找父级的同级,父级的同级还不满足,则寻找父级的父级,若父级的父级的相邻枝干没有满足,则就退出循环和判断。其他的判断情况下就是嵌套。