JAVASCRIPT写的树,类似微软的treeview控件,不过更好用,更灵活,效率更高!

function startMenu() {

// /菜单参数

 imageDirectory = 'img'; 图片目录
 menuTree = new obj_collection()

 defineMenuItems(menuTree)

 if (definitionsHaveErrors(menuTree) == false) {createAppearanceArray(menuTree,menuTree.itemWithID('root'));
            treeVariable = menuTree;
           expandNode('root');
           //expandNode('onlinecheck');
        //expandNode('myworks')
        //expandNode('ziliao')
     }

}

// OBJ_NODE - 定义结点对象

// ID = 每个结点的绝对标记
// NAME = 菜单上显示的结点名称
// PARENTID = 父结点的标记
// TYPE = 可以是文档,文件夹或者根结点
// URL = 结点对应的连接
// ALTIMAGE = 16x16 GIF文件(不用于文件夹folders)
// POSITION = 结点的位置
// TARGET = 需要在Frame打开时,为空表示在当前页面打开。
//   _top 表示整页面打开。

function obj_node(id,name,parentID,type,url,altImage,position,target) {
       this.id = id.toLowerCase();
     this.name = name;
        this.parentID = parentID.toLowerCase();
     this.type = type.toLowerCase();
      this.url = url;
 this.altImage = altImage;
 this.position = position;
   this.target = target;
}

// OBJ_COLLECTION function - defines a new collection

function obj_collection() {
 this.addItem = addItem;
 this.itemWithID = itemWithID;
 this.itemIDExists = itemIDExists;
 this.extractExpandableNodes = extractExpandableNodes;
 this.posOfItemWithID = posOfItemWithID;
 this.length = 0;
 return this
}

// OBJ_ARRAY function - defines a fixed size array

function obj_array(size) {
 this.length = size;
 this.itemWithID = itemWithID;
 this.itemIDExists = itemIDExists;
 this.posOfItemWithID = posOfItemWithID;
 return this
}

// OBJ_NODEAPPEARANCE - defines the appearance of a menu node (using images)

function obj_appearanceNode(id,imageSequence,name,parentID,type,url,target,visable) {
 this.id = id;
 this.imageSequence = imageSequence;
 this.name = name;
 this.parentID = parentID;
 this.type = type;
 this.url = url;
 this.target = target;
 this.visable = visable; 
 return this
}

// createAppearanceArray() function - this function looks at the menu node definitions,
//          works out how they all fit together, and determines the
//          image sequence needed to show their position on the menu
//          tree.  This is then stored in the appearanceArray.

function createAppearanceArray(treeVariable,startNode) {
 appearanceArray = new obj_array(treeVariable.length);
 appearancePos = 1;
 if (startNode.type == 'page') {alert("The createAppearanceArray() function can only be called on a root or folder node.")}
 else {createAppearanceBranch(treeVariable,startNode)}
}

function createAppearanceBranch(treeVariable,startNode) {
 if (startNode.type == 'root') {if (startNode.altImage == '') {var iconImage = 'img-globe.gif'}
           else {var iconImage = startNode.altImage}
           var newAppNode = new obj_appearanceNode(startNode.id,iconImage,startNode.name,'',startNode.type,startNode.url,startNode.target,true)
           appearanceArray[appearancePos] = newAppNode;
           appearancePos = appearancePos + 1}
 if (startNode.type == 'folder') {var newAppNode = new obj_appearanceNode(startNode.id,'',startNode.name,startNode.parentID,startNode.type,startNode.url,startNode.target,false);
              var appearanceStr = addStringToStart('','img-folder.gif');
       var lengthOfBranch = extractChildren(treeVariable,treeVariable.itemWithID(startNode.parentID)).length;
       if (startNode.position == lengthOfBranch) {appearanceStr = addStringToStart(appearanceStr,'img-plus-end.gif|')}
       else {appearanceStr = addStringToStart(appearanceStr,'img-plus-cont.gif|')}
       appearanceStr = addStringToStart(appearanceStr,createParentalStructure(treeVariable,startNode.id));
       newAppNode.imageSequence = appearanceStr;
       appearanceArray[appearancePos] = newAppNode;
       appearancePos = appearancePos + 1}
     

 if (startNode.type == 'page') {var newAppNode = new obj_appearanceNode(startNode.id,'',startNode.name,startNode.parentID,startNode.type,startNode.url,startNode.target,false);
           if (startNode.altImage == '') {var appearanceStr = 'page.gif'}
           else {var appearanceStr = startNode.altImage}
           var lengthOfBranch = extractChildren(treeVariable,treeVariable.itemWithID(startNode.parentID)).length;
           if (startNode.position == lengthOfBranch) {appearanceStr = addStringToStart(appearanceStr,'img-branch-end.gif|')}
           else {appearanceStr = addStringToStart(appearanceStr,'img-branch-cont.gif|')}
           appearanceStr = addStringToStart(appearanceStr,createParentalStructure(treeVariable,startNode.id));
     newAppNode.imageSequence = appearanceStr;
           appearanceArray[appearancePos] = newAppNode;
           appearancePos = appearancePos + 1
           }
 else {
  var nodeChildren = extractAndSortChildren(treeVariable,startNode);
  var lengthOfBranch = nodeChildren.length;
  var currentIndex = 1;
  while (currentIndex <= lengthOfBranch) {createAppearanceBranch(treeVariable,nodeChildren[currentIndex])
       currentIndex = currentIndex + 1}
      }
}

function collapseNode(nodeID) {

 var startingPos = appearanceArray.posOfItemWithID(nodeID) + 1;
 childCount = 0;
 countChildrenOf(treeVariable,nodeID);
 var endPos = (startingPos + childCount) - 1;
 
 if (endPos < startingPos) {endPos = startingPos + ((extractChildren(treeVariable,treeVariable.itemWithID(nodeID)).length) - 1) }

 currentIndex = startingPos
 while (currentIndex <= endPos) {
  if (appearanceArray[currentIndex].type == 'folder') {if ((appearanceArray[currentIndex].imageSequence).indexOf("img-folder-open.gif") != -1) {collapseAppearance(appearanceArray[currentIndex]); appearanceArray[currentIndex].visable = false}
             else {appearanceArray[currentIndex].visable = false}
            }
  else {appearanceArray[currentIndex].visable = false}
  currentIndex = currentIndex + 1
 }

 collapseAppearance(appearanceArray.itemWithID(nodeID))
 timeOutId = setTimeout("drawMenu(appearanceArray)",100);
}

function collapseAppearance(arrayNode) {
 var imageSequence = arrayNode.imageSequence;
 var newImage = "img-plus-cont.gif";
 var oldCont = "img-minus-cont.gif";
 var oldEnd = "img-minus-end.gif";
 var oldLength = oldCont.length;
 var plusPosition = imageSequence.indexOf(oldCont)
 if (plusPosition == -1) {plusPosition = imageSequence.indexOf(oldEnd); newImage = "img-plus-end.gif"; oldLength = oldEnd.length}

 var newAppearance = imageSequence.substring(0,plusPosition) + newImage + "|img-folder.gif"
 arrayNode.imageSequence = newAppearance;
}

// expandNode() function - expands and displays the given node

function expandNode(nodeID) {
 var lengthOfArray = appearanceArray.length;
 var currentIndex = 1;
 while (currentIndex <= lengthOfArray) {
  if ((appearanceArray[currentIndex].id == nodeID) || (appearanceArray[currentIndex].parentID == nodeID)) {appearanceArray[currentIndex].visable = true;
            
             if (appearanceArray[currentIndex].id == nodeID) {var parentIndex = currentIndex}
             }
  currentIndex = currentIndex + 1;
 }
 if (appearanceArray[parentIndex].type != 'root') {
  expandAppearance(appearanceArray[parentIndex])}
 timeOutId = setTimeout("drawMenu(appearanceArray)",100);
}

function expandAppearance(arrayNode) {
 var imageSequence = arrayNode.imageSequence;
 var newImage = "img-minus-cont.gif";
 var oldCont = "img-plus-cont.gif";
 var oldEnd = "img-plus-end.gif";
 var oldLength = oldCont.length;
 var plusPosition = imageSequence.indexOf(oldCont)
 if (plusPosition == -1) {plusPosition = imageSequence.indexOf(oldEnd); newImage = "img-minus-end.gif"; oldLength = oldEnd.length}

 var newAppearance = imageSequence.substring(0,plusPosition) + newImage + "|img-folder-open.gif";
 arrayNode.imageSequence = newAppearance;
}

// drawMenu() 函数 - 生成explorer外观的菜单,使用document.write书写相关的页面,自己修改。

function drawMenu(appearanceArray) {
 var lengthOfArray = appearanceArray.length;
 var currentIndex = 1;
 var uname;
 top.MenuFrame.document.open("text/html");
 top.MenuFrame.document.write("<HTML><head><link rel='stylesheet' href='includes/tree.css'></head><BODY>")
 while (currentIndex <= lengthOfArray) {
  if (appearanceArray[currentIndex].visable == true){drawNode(appearanceArray[currentIndex])}
  currentIndex = currentIndex + 1;
 }
 top.MenuFrame.document.close();
 window.status = '欢迎使用环保维护系统';
}
function getcookieval(offset)
{
 var endstr=document.cookie.indexOf(";",offset)
 if (endstr==-1)
  endstr=document.cookie.length
 return unescape(document.cookie.substring(offset,endstr))
}
function getcookie(name)
{
 var arg=name+"="
 var alen=arg.length
 var clen=document.cookie.length
 var i=0
 while (i<clen)
 {
  var j=i+alen
  if (document.cookie.substring(i,j)==arg)
   return getcookieval(j)
  i=document.cookie.indexOf(" ",i)+1
  if (i==0)
   break
 }
 return null
}


function drawNode(node) {
 var imageSequence = node.imageSequence;
 writeImageSequence(node,imageSequence);
 top.MenuFrame.document.write("&nbsp;")
 if (node.type == 'root')
 {
  nodeName = node.name
 }else {
  nodeName = node.name
 }
 
 if (node.target == '')
 {
  var nodeTarget = 'PageFrame'
 }else {
  nodeTarget = node.target
 }
 
 if (node.type!='folder')
 {
  top.MenuFrame.document.writeln("<A HREF=" + node.url + " TARGET='" + nodeTarget + "'>" + nodeName + "</A><BR>")
 }else{
  
  nodeIdent = "'" + node.id + "'"
  switch (imgstyle)
  {
   case 'close':
    top.MenuFrame.document.writeln("<A HREF=javascript:top.expandNode(" + nodeIdent + ")>" + nodeName +"</A><BR>")
    break
   default:
    top.MenuFrame.document.writeln("<A HREF=javascript:top.collapseNode(" + nodeIdent + ")>" + nodeName +"</A><BR>")
  }
 }
 
}

function writeImageSequence(node,sequence) {
 var finished = false;
 var lengthOfString = sequence.length;
 var imageSeq = sequence;
 
 if (node.target == '')
 {
  var nodeTarget = 'PageFrame'
 }else {
  nodeTarget = node.target
 }

 while (finished == false)
 {
  if (imageSeq == '')
  {
   finished = true
  }else { 
   imageString = stringUpToBar(imageSeq);
   if (imageString.length == imageSeq.length)
   {
    imageSeq = ''
   }else {
    imageSeq = imageSeq.substring(imageString.length + 1,imageSeq.length);
   }
   switch(imageString)
   {
    case 'img-plus-cont.gif':
     nodeIdent = "'" + node.id + "'"
     top.MenuFrame.document.write("<A HREF=javascript:top.expandNode(" + nodeIdent + ")><IMG SRC='" + imageDirectory + "/" + imageString + "' ALIGN=TEXTTOP BORDER=0></A>")
     break
    case 'img-plus-end.gif':
     nodeIdent = "'" + node.id + "'"
     top.MenuFrame.document.write("<A HREF=javascript:top.expandNode(" + nodeIdent + ")><IMG  SRC='" + imageDirectory + "/" + imageString + "' ALIGN=TEXTTOP BORDER=0></A>")
     break
     
    case 'img-folder.gif':
     imgstyle="close"
     nodeIdent = "'" + node.id + "'"
     top.MenuFrame.document.write("<A HREF=javascript:top.expandNode(" + nodeIdent + ")><IMG SRC='" + imageDirectory + "/" + imageString + "' ALIGN=TEXTTOP BORDER=0></A>")
     break

    case 'img-minus-cont.gif':
     
     nodeIdent = "'" + node.id + "'"
     top.MenuFrame.document.write("<A HREF=javascript:top.collapseNode(" + nodeIdent + ")><IMG SRC='" + imageDirectory + "/" + imageString + "' ALIGN=TEXTTOP BORDER=0></A>")
     break
     
    case 'img-minus-end.gif':
     nodeIdent = "'" + node.id + "'"
     top.MenuFrame.document.write("<A HREF=javascript:top.collapseNode(" + nodeIdent + ")><IMG SRC='" + imageDirectory + "/" + imageString + "' ALIGN=TEXTTOP BORDER=0></A>")
     break
     
    case 'img-folder-open.gif':
     imgstyle="open"
     nodeIdent = "'" + node.id + "'"
     top.MenuFrame.document.write("<A HREF=javascript:top.collapseNode(" + nodeIdent + ")><IMG SRC='" + imageDirectory + "/" + imageString + "' ALIGN=TEXTTOP BORDER=0></A>")
     break
     
    case 'img-page.gif':
     nodeIdent = "'" + node.id + "'"
     top.MenuFrame.document.write("<A HREF='" + node.url + "' TARGET='" + nodeTarget + "'><IMG SRC='" + imageDirectory + "/" + imageString + "' ALIGN=TEXTTOP BORDER=0></A>")
     break

    default:
     top.MenuFrame.document.write("<IMG  SRC='" + imageDirectory + "/" + imageString + "' ALIGN=TEXTTOP>")
   }
   
  }
 }
}

function stringUpToBar(string) {
 var lengthOfString = string.length;
 var currentIndex = 0;
 var newString = '';
 var finished = false;
 while (finished == false) {
  if (currentIndex == lengthOfString) {finished = true}
  else {
   if (string.charAt(currentIndex) == '|') {finished = true}
   else {newString = newString + string.charAt(currentIndex)}
   currentIndex = currentIndex + 1
       }
  if (currentIndex == lengthOfString) {finished = true}
 }
 return newString
}

// addStringToStart() function - adds the addition string to the front of the existing string

function addStringToStart(existingString,addition) {
 newString = addition + existingString;
 return newString
}

// createParentalStructure() function - creates a string that shows the parental tree structure

function createParentalStructure(treeVariable,nodeID) {
 var parentAppearance = '';
 var parentID = treeVariable.itemWithID(nodeID).parentID;
 var currentNode = treeVariable.itemWithID(parentID);
 while (parentID != 'root') {
   var nodePos = currentNode.position;
   parentID = currentNode.parentID;
   currentNode = treeVariable.itemWithID(parentID);
   var lengthOfBranch = extractChildren(treeVariable,currentNode).length;
   if (nodePos < lengthOfBranch) {parentAppearance = addStringToStart(parentAppearance,'img-vert-line.gif|')}
   else {parentAppearance = addStringToStart(parentAppearance,'img-blank.gif|')}
 }
 return parentAppearance
}

// extractExpandableNodes() - METHOD of obj_collection - extracts the root and all folder nodes
//        into a new collection

function extractExpandableNodes() {
 var newCollection = new obj_collection();
 var collectionSize = this.length;
 var currentIndex = 1;
 var currentArray = this;
 while (currentIndex <= collectionSize) {
  if ((currentArray[currentIndex].type == 'folder') || (currentArray[currentIndex].type == 'root')) {
   newCollection = newCollection.addItem(currentArray[currentIndex])
  }
 currentIndex = currentIndex + 1
 }
 return newCollection
}

// ADDITEM function - METHOD of OBJ_COLLECTION - adds an object to the collection

function addItem(object) {
 collectionSize = this.length;
 returnArray = this;
 idExists = returnArray.itemIDExists(object.id)
 if (idExists == false) {returnArray.length = collectionSize + 1;
    returnArray[returnArray.length] = object;
     return returnArray}
 else {alert("ERROR: Object with id: " + object.id + " already exists in this collection.")
       return returnArray}
}
function countChildrenOf(treeVariable,nodeID) {
 var node = treeVariable.itemWithID(nodeID);
 var nodeChildren = extractChildren(treeVariable,node);
 var currentIndex = 1;
 while (currentIndex <= nodeChildren.length) {
  if (nodeChildren[currentIndex].type != 'page') {countChildrenOf(treeVariable,nodeChildren[currentIndex].id)}
  childCount = childCount + 1;
  currentIndex = currentIndex + 1;
 }
}

function posOfItemWithID(id) {
 collectionSize = this.length;
 currentIndex = 1;
 returnIndex = 'undefined';
 while (currentIndex <= collectionSize) {
  if (this[currentIndex].id == id) {returnIndex = currentIndex}
  currentIndex = currentIndex + 1}
 if (returnObject == 'undefined') {alert("ERROR: Object with id: " + id + " not found in this collection.")}
 else {return returnIndex}
}

// ITEMWITHID function - METHOD of OBJ_COLLECTION and OBJ_ARRAY - returns an object with the given ID

function itemWithID(id) {
 collectionSize = this.length;
 currentIndex = 1;
 returnObject = 'undefined';
 while (currentIndex <= collectionSize) {
  if (this[currentIndex].id == id) {returnObject = this[currentIndex]}
  currentIndex = currentIndex + 1}
 if (returnObject == 'undefined') {alert("ERROR: Object with id: " + id + " not found in this collection.")}
 else {return returnObject}
}

// ITEMIDEXISTS function - METHOD of OBJ_COLLECTION and OBJ_ARRAY - checks if an object with the given ID
//            already exists in the collection

function itemIDExists(id) {
 collectionSize = this.length;
 currentIndex = 1;
 returnStatus = false;
 while (currentIndex <= collectionSize) {
  if ((this[currentIndex].id) == id) {returnStatus = true}
  currentIndex = currentIndex + 1}
 return returnStatus
}

// definitionsHaveErrors function - general function - checks the defined menu infrastructure
//                    for errors.

function definitionsHaveErrors(treeVariable) {
 hasErrors = false
 
 if (checkForMultipleRoots(treeVariable) == true) {hasErrors = true}
 if (checkNodeTypes(treeVariable) == true) {hasErrors = true}
 if (checkForOrphanNodes(treeVariable) == true) {hasErrors = true}
 if (checkForChildren(treeVariable) == true) {hasErrors = true}
 if (checkNodePositions(treeVariable) == true) {hasErrors = true}
 
 return hasErrors
}

// checkNodeTypes function - called from definitionsHaveErrors() function
// - checks for nodes with unknown types

function checkNodeTypes(treeVariable) {
 collectionSize = treeVariable.length;
 var currentIndex = 1;
 var returnStatus = false;
 while (currentIndex <= collectionSize) {
  if ((treeVariable[currentIndex].type != 'root') && (treeVariable[currentIndex].type != 'page') && (treeVariable[currentIndex].type != 'folder')) {
   alert("Node with ID: " + treeVariable[currentIndex].id + " is of an unknown type: " + treeVariable[currentIndex].type + " (not a page, folder or root).")
  }
  currentIndex = currentIndex + 1;
 }
 return returnStatus
}

// checkForMultipleRoots function - called from definitionsHaveErrors() function
// - checks if the menu infrastructure has multiple root nodes
 
function checkForMultipleRoots(treeVariable) {
 collectionSize = treeVariable.length;
 currentIndex = 1;
 rootCount = 0;
 while (currentIndex <= collectionSize) {
  if ((treeVariable[currentIndex].type) == 'root') {rootCount = rootCount + 1}
  currentIndex = currentIndex + 1}
 if (rootCount == 1) {return false}
 else {if (rootCount == 0) {alert("ERROR: You have not defined a root node.")}
       else {alert("ERROR: You have defined more than one root node.")}
       return true}
}


// checkForOrphanNodes() function - called from definitionsHaveErrors() function
// - checks if the menu infrastructure contains any nodes without defined parents

function checkForOrphanNodes(treeVariable) {
 collectionSize = treeVariable.length;
 var currentIndex = 1;
 var returnStatus = false;
 while (currentIndex <= collectionSize) {
  if ((treeVariable[currentIndex].type) != 'root') {if (((treeVariable.itemIDExists(treeVariable[currentIndex].parentID)) == false) && (treeVariable[currentIndex].parentID != '')) {returnStatus = true;
                                  alert("ERROR: The parent node: " + treeVariable[currentIndex].parentID + " does not exist for node: " + treeVariable[currentIndex].id + ".")}
          if (treeVariable[currentIndex].parentID == '') {returnStatus = true;
                alert("ERROR: Node with ID: " + treeVariable[currentIndex].id + " has no parent, and is not the root node.")}
                                 if (treeVariable.itemWithID(treeVariable[currentIndex].parentID).type == 'page') {returnStatus = true; alert("ERROR: Node with ID: " + treeVariable[currentIndex].id + " has a parent (" + treeVariable[currentIndex].parentID + "), but this parent is a page (should be a folder or the root).")}
         }
  currentIndex = currentIndex + 1}
 return returnStatus             
}

// checkForChildren() function - called from definitionsHaveErrors() function
// - checks that all nodes (except pages) in the menu infrastructure have at least one child

function checkForChildren(treeVariable) {
 collectionSize = treeVariable.length;
 var currentIndex = 1;
 var returnStatus = false;
 while (currentIndex <= collectionSize) {

  if ((treeVariable[currentIndex].type) != 'page') {
   if (checkParentID(treeVariable,treeVariable[currentIndex].id) == false) {returnStatus = true; alert("ERROR: Node with ID: " + treeVariable[currentIndex].id + " is a root node or a folder node (or an node of unknown type) without any defined children.  The root node and any folder nodes MUST have at least one child node.")}
         }
 
 currentIndex = currentIndex + 1
 }
 return returnStatus
}

// checkParentID() function - checks the given tree for nodes with the given parent ID

function checkParentID(treeVariable,parentCode) {
 collectionSize = treeVariable.length;
 var currentIndex = 1;
 var returnStatus = false;
 while (currentIndex <= collectionSize) {
  if ((treeVariable[currentIndex].parentID) == parentCode) {returnStatus = true}
  currentIndex = currentIndex + 1
 }
 return returnStatus 
}

// checkNodePositions() function - checks the tree infrastructure for node positioning errors

function checkNodePositions(treeVariable) {

 // 1. Make a collection of all folders and the root node
 expandableNodes = treeVariable.extractExpandableNodes()

 // 2. For each node in this collection, make a collection of all the nodes that
        //    are children of that node.

 var currentIndex = 1;
 var collectionSize = expandableNodes.length;
 var returnStatus = false;

 while (currentIndex <= collectionSize) {
  var scanCollection = extractChildren(treeVariable,expandableNodes[currentIndex]);
  
  if (scanPositionErrors(scanCollection,expandableNodes[currentIndex].id) == true) {returnStatus = true}

 currentIndex = currentIndex + 1
 }

 return returnStatus
}


// scanPositionErrors() function - scans the given collection of children for positioning errors

function scanPositionErrors(scanCollection,idOfParent) {

 var returnStatus = false;
 var currentIndex = 1;
 var collectionSize = scanCollection.length;

 // Check for nodes with positions less than 1

 while (currentIndex <= collectionSize) { 
  if (scanCollection[currentIndex].position < 1) {returnStatus = true;
        alert("ERROR: Node with ID: " + scanCollection[currentIndex].id + " with parent: " + scanCollection[currentIndex].parentID + " has a illegal position value (less than 1).")}
  currentIndex = currentIndex + 1
 }
 currentIndex = 1

 while (currentIndex <= collectionSize) { 
  if (scanCollection[currentIndex].position > collectionSize) {returnStatus = true;
        alert("ERROR: Node with ID: " + scanCollection[currentIndex].id + " with parent: " + scanCollection[currentIndex].parentID + " has a illegal position value (greater than branch maximum of " + collectionSize + " positions).")}
  currentIndex = currentIndex + 1
 }
 var loopNo = 1;
 
 while (loopNo <= collectionSize) {
 
  var currentIndex = 1;
  var positionFound = false;
  while (currentIndex <= collectionSize) { 
   if (scanCollection[currentIndex].position == loopNo) {positionFound = true}
   currentIndex = currentIndex + 1
  }
  if (positionFound == false) {returnStatus = true;  alert("ERROR: There is no node at position " + loopNo + " in branch " + idOfParent + ".  Two or more nodes may have the same position value.")}
  loopNo = loopNo + 1
 }
 currentIndex = 1

 return returnStatus
}

function extractChildren(treeVariable,node) {
 var newCollection = new obj_collection();
 var currentIndex = 1;
 var collectionSize = treeVariable.length;
 nodeID = node.id;

 while (currentIndex <= collectionSize) {
  if ((treeVariable[currentIndex].parentID) == nodeID) {
   newCollection = newCollection.addItem(treeVariable[currentIndex])
  }
  currentIndex = currentIndex + 1
 }
 return newCollection
}

function extractAndSortChildren(treeVariable,node) {
 var childCollection = extractChildren(treeVariable,node);
 var newCollection = new obj_collection();
 var lengthOfCollection = childCollection.length;
 var currentIndex = 1;
 while (currentIndex <= lengthOfCollection) {
  var newNode = extractNodeWithPosition(childCollection,currentIndex)
  newCollection = newCollection.addItem(newNode)
  currentIndex = currentIndex + 1
 }
 return newCollection
}

function extractNodeWithPosition(collection,position) {
 var currentIndex = 1;
 var lengthOfCollection = collection.length;
 while (currentIndex <= lengthOfCollection) {
  if (collection[currentIndex].position == position) {var node = collection[currentIndex]}
  currentIndex = currentIndex + 1
 }
 return node
}

// DEFINEMENUITEMS function - general function - called from start of script to create the menu
//                     infrastructure.
//
// 以下内容需要你设置,即左侧menu的内容,格式如下:  uniqueID,displayName,parentID,typeOfNode,URL,altImage,positionInTree,targetFrame


 

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值