嵌套循环编写,信息树遍历!js编写

 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);
             }
        }

 

通过该方法的编写得知: 嵌套方法的编写时,满足条件的需要一直嵌套,剩下的工作就是一直寻找所有枝干中 不满足条件的情况。另外注意,该分支不满足条件时,需要找其相邻枝干是否满足条件,相邻枝干再不满足条件,就需要寻找父级的情况,如果父级的情况还不满足条件,则找父级的同级,父级的同级还不满足,则寻找父级的父级,若父级的父级的相邻枝干没有满足,则就退出循环和判断。其他的判断情况下就是嵌套。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值