国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發 > AJAX > 正文

AJAX+XML實現動態下拉導航

2024-09-01 08:30:17
字體:
來源:轉載
供稿:網友

AJAX+XML實現動態下拉導航 ,根據客戶的需要做一個產品的分類的導航菜單,以前使用ASP遞歸讀取的。速度慢,而且消耗大量服務器資源。干脆改成AJAX+XML。共享出來和大家交流。希望各位能幫忙改進。
產品分類的XML文件

復制代碼 代碼如下:

//id為自身id,pid為父級分類ID?
?
?
???????1321系列?
???????43223系列?

?


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("http://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(passPid>0)
??{
???????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?=?"?"?+currentItems[i].firstChild.data?+?"";
???}
???else
???{
????_v?=?""+?currentItems[i].firstChild.data?+"";
???}

???newChild.innerHTML=_v;

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


//檢測是否有下級
function?CheckPullMenu(passPid)
{

var?currentItems?=?root.selectNodes("http://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";
??}
} ?>?>
?


使用方法:在網頁中加入"

?

"。在body加入onload="funCreatePullMenu(0,0)"

最終效果:


可以在代碼中增加定義CSS。達到更好的效果。更多精彩內容,盡在https://js.VeVb.com。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 舒兰市| 资兴市| 武清区| 通化县| 宣武区| 股票| 洪湖市| 昌图县| 河南省| 湘潭县| 离岛区| 朝阳市| 桓仁| 景谷| 天柱县| 夏津县| 新蔡县| 津南区| 巫山县| 库伦旗| 焦作市| 吐鲁番市| 高阳县| 陇南市| 无为县| 藁城市| 武山县| 永吉县| 广德县| 抚远县| 南康市| 光山县| 大宁县| 德清县| 盐津县| 全椒县| 清水县| 勐海县| 无极县| 五原县| 拜城县|