精彩专题推荐:建站之入门课 建站之必修课 建站之关键课 网站价值所在 流量提高专题 css+div 标准 个人网站打造全过程
返回建站学首页
导航:
建站首页 | 网站设计 | 网站开发 | 网站运营 | 网页软件 | 建站指南 | 搜索优化 | 图像处理 | 视频教程 | 书籍教程 | 建站专题
当前位置:首页>网站开发>xml教程>正文

利用ASP和XML制作菜单导航系统


来源:网页教学 时间:06-12-25 点击: 点击这里收藏本文


       currentNode.childNodes.item(0).text + "'" >" +

       currentNode.childNodes.item(1).text +

       "< /SPAN >< BR >

");

     eval(startMenu + "_Array[i] = sMenuItem")    

   }

  }

 }
   创建初始的数组(名为menu1_Array)之后,程序检查第一个< menuItem >标记是否含有子节点。要获得子节点的数量非常简单,只需访问父节点的childNodes.length属性即可得到。
   检查子节点数量的时候,判断条件是childNotes.length属性是否大于1,这是因为节点中的文本也是一个节点,length值包含它。如果以等于1作为判断条件,即使唯一的子节点是文本节点而不是元素节点,if语句也将返回true(尽管我们还可以检查子节点的类型,但不如当前方法简洁)。
   分析节点的同时,所有必需的< DIV >属性和客户端事件响应代码(文本)都保存到了变量sMenuItem,然而又把sMenuItem保存到数组,它在数组中的位置由当前在循环中的位置决定。如果当前节点包含元素类型的子节点,则调用walkTree()并将当前节点作为参数传递给它。
   2.2 递归函数walkTree
   所谓的递归函数,就是自己调用自己的函数。递归函数非常适合于处理层次结构的数据。在遍历XML树时,使用递归函数可以减少大量的代码,一个简单的递归结构可以处理数量庞大的子菜单。
   walkTree()函数以一个节点为参数,与前面所讨论的过程类似,它将创建数组并检查childNode.length属性。下面是walkTree()的完整代码:
  function walkTree(node) {

   level += 1;

   // 数组名字为DIV的名字加"_Array"

   eval("var " + currentMenu + "_Array = new Array()")      

   for (var j=2;j< node.childNodes.length;j++) {

    newNode = node.childNodes.item(j)

    if (newNode.hasChildNodes() == true && newNode.childNodes.length >2) {

    // 每一个节点拥有0=链接和1=文本节点

    // 因此如仅有这些子节点则不必再次调用函数

     currentMenu = currentMenu + "_" + (j-1);

     thisMenu = currentMenu.substring(0,currentMenu.length-2);

     sMenuItem = escape("< SPAN id="" + thisMenu + "_span" + (j-1) +

        "" class='cellOff' " + "onMouseOver="stateChange('" + currentMenu +

        "',this," + level + ")" onMouseOut="stateChange('',this,'')" >" +

        image + newNode.childNodes.item(1).text +

        "< /SPAN >< BR >

");

     eval(thisMenu + "_Array[j-2] = sMenuItem");

     walkTree(newNode);

    } else {

      sMenuItem = escape("< SPAN id="" + currentMenu + "_span" +

         (j-1) + "" class='cellOff' " +

         "onMouseOver="stateChange('',this,'');hideDiv(" +

         level + ")" onMouseOut="stateChange('',this,'')" " +

         "onClick="location.href='" +

         newNode.childNodes.item(0).text + "'" >" +

         newNode.childNodes.item(1).text +

         "< /SPAN >< BR >

");

     eval(currentMenu + "_Array[j-2] = sMenuItem");

    }  

   }

   arrayNamesArray[arrayNamesArray.length] = currentMenu;

   tempString = (unescape(eval(currentMenu + "_Array.join('')")))

   arrayHolderArray[arrayHolderArray.length] = tempString

 

   currentMenu = currentMenu.substring(0,currentMenu.length-2);    
9 7 3 1 2 3 4 5 6 4 8 :

  把此文章收藏到:          
广而告之
文章搜索
  • Google JZxue.Com

关于我们 | 联系我们 | 友情链接 | 网站地图
Copyright © 2005 - 2006 建站学 All rights reserved.