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

来源:互联网 发布:淘宝动漫周边 编辑:程序博客网 时间:2024/06/04 01:39

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

 

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

原创粉丝点击