Ajax读取XML实现动态下拉导航

616625726abc

616625726abc

2016-02-19 12:25

生活已是百般艰难,为何不努力一点。下面图老师就给大家分享Ajax读取XML实现动态下拉导航,希望可以让热爱学习的朋友们体会到设计的小小的乐趣。
根据客户的需要做一个产品的分类的导航菜单,以前使用ASP递归读取的。速度慢,而且消耗大量服务器资源。干脆改成AJAX+XML。共享出来和大家交流。希望各位能帮忙改进。
产品分类的XML文件
代码如下:

//id为自身id,pid为父级分类ID 
?xml version="1.0" encoding="UTF-8" ? 
Proot 
       Item id="1" pid="0"1321系列/Item 
       Item id="2" pid="1"43223系列/Item 
/Proot 

js代码
代码如下:

var root;
//FireFox不支持selectNodes方法,在网上找到这段代码解决了这个问题。兼容了IE和FireFox.
//创建selectNodes方法
if( document.implementation.hasFeature("XPath", "3.0") )
{
   // prototying the XMLDocument
   XMLDocument.prototype.selectNodes = function(cXPathString, xNode)
   {
      if( !xNode ) { xNode = this; } 
      var oNSResolver = this.createNSResolver(this.documentElement)
      var aItems = this.evaluate(cXPathString, xNode, oNSResolver, 
                   XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null)
      var aResult = [];
      for( var i = 0; i  aItems.snapshotLength; i++)
      {
         aResult[i] =  aItems.snapshotItem(i);
      }
      return aResult;
   }

   // prototying the Element
   Element.prototype.selectNodes = function(cXPathString)
   {
      if(this.ownerDocument.selectNodes)
      {
         return this.ownerDocument.selectNodes(cXPathString, this);
      }
      else{throw "For XML Elements Only";}
   }
}





function createXMLHttpRequest() {
    if (window.ActiveXObject) {
        oXmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
    } 
    else if (window.XMLHttpRequest) {
        oXmlHttp = new XMLHttpRequest();
    }

}


function CreateXMLDOM()
{
createXMLHttpRequest();
oXmlHttp.open( "GET", "XML路径", false ) ;
oXmlHttp.send(null) ;
root = oXmlHttp.responseXML.documentElement;
}
CreateXMLDOM()

function funCreatePullMenu(passPid,ChildId)
{

var currentItems = root.selectNodes("//Proot/Item[@pid = " + passPid + "]");
var iItems = currentItems.length;
var k=0;
if(iItems  0)
{

  
  var pdiv = document.createElement("DIV");
  pdiv.id="piv" + passPid;
  pdiv.className = "piv" + ChildId;
  pdiv.name = "piv" + passPid;
  if(passPid0)
  {
       pdiv.style.display="none";
    document.getElementById("div" + passPid).appendChild(pdiv);
  }
  else
  {
    document.getElementById("odiv").appendChild(pdiv);
  }
  for(var i = 0; i  iItems; i++)
  {
   var _id = currentItems[i].attributes[0].value;
   var newChild = document.createElement("DIV");
   newChild.id="div" + _id;
   newChild.className = "div" + ChildId;
   newChild.name = "div" + _id;

   var _v ;
   if(CheckPullMenu(_id))
   {
    _1= _id
    _v = "a href='javascript:showsubmenu(" + _1 + ")' " +currentItems[i].firstChild.data + "/a";
   }
   else
   {
    _v = "a href='ProductList.aspx?type=" + _id + "'"+ currentItems[i].firstChild.data +"/a";
   }

   newChild.innerHTML=_v;

   
   document.getElementById("piv" + passPid).appendChild(newChild);
   if(CheckPullMenu(_id))
   {
   funCreatePullMenu(_id,ChildId+1)
   }
  }
}
}


//检测是否有下级
function CheckPullMenu(passPid)
{

var currentItems = root.selectNodes("//Proot/Item[@pid = " + passPid + "]");
var iItems = currentItems.length;
if(iItems  0)
{
  return true;
}
    else
{
  return false;
}

}

//显示隐藏层
function showsubmenu(sid)
{
var whichEl = document.getElementById( "piv" +sid);
if (whichEl.style.display == "none")
  {
           whichEl.style.display="block";
  }
else
  {
     whichEl.style.display="none";
  }
}


使用方法:在网页中加入"div id="odiv"/div"。在body加入onload="funCreatePullMenu(0,0)"

最终效果:


可以在代码中增加定义CSS。达到更好的效果。

原发于:http://www.23mo.com/blog/article.asp?id=16
使用方法:在网页中加入"div id="odiv"/div"。在body加入onload="funCreatePullMenu(0,0)"

最终效果:


可以在代码中增加定义CSS。达到更好的效果。

原发于:http://www.23mo.com/blog/article.asp?id=16
展开更多 50%)
分享

猜你喜欢

Ajax读取XML实现动态下拉导航

Web开发
Ajax读取XML实现动态下拉导航

ajax实现标签导航

Web开发
ajax实现标签导航

s8lol主宰符文怎么配

英雄联盟 网络游戏
s8lol主宰符文怎么配

用Ajax读取XML格式的数据

Web开发
用Ajax读取XML格式的数据

用Ajax读取xml文件的简单例子

Web开发
用Ajax读取xml文件的简单例子

lol偷钱流符文搭配推荐

英雄联盟 网络游戏
lol偷钱流符文搭配推荐

Ajax联动下拉框的实现例子

Web开发
Ajax联动下拉框的实现例子

AJAX实现动态树型结构

Web开发
AJAX实现动态树型结构

lolAD刺客新符文搭配推荐

英雄联盟
lolAD刺客新符文搭配推荐

17寸显示器最佳分辨率是多少

17寸显示器最佳分辨率是多少

Java Web中的入侵检测及简单实现

Java Web中的入侵检测及简单实现
下拉加载更多内容 ↓