當(dāng)前位置:軟件學(xué)堂 > 資訊首頁 > 網(wǎng)絡(luò)編程 > 編程其他 > JS代碼實(shí)現(xiàn)樹形目錄菜單

JS代碼實(shí)現(xiàn)樹形目錄菜單

2012/11/2 20:23:01作者:佚名來源:網(wǎng)絡(luò)

移動(dòng)端

【實(shí)例名稱】

JS代碼實(shí)現(xiàn)樹形目錄菜單

【實(shí)例描述】

網(wǎng)絡(luò)菜單有很多種形式,如彈出式、下拉式等。本例介紹樹型菜單的制作方法。

【實(shí)例代碼】

<html xmlns="http://www.w3.org/1999/xhtml" > <head>     <title>標(biāo)題頁-學(xué)無憂(m.wangbatian.cn)</title> <script language="JavaScript"> //判斷瀏覽器的變量 NS4 = (document.layers) ? 1 : 0; IE4 = (document.all) ? 1 : 0; ver4 = (NS4 || IE4) ? 1 : 0; //定義各個(gè)層的位置及顯示狀態(tài) if (ver4) {     with (document) {         write("<STYLE TYPE='text/css'>");         if (NS4) {             write(".parent {position:absolute; visibility:visible}");             write(".child {position:absolute; visibility:visible}");             write(".regular {position:absolute; visibility:visible}")         }         else {             write(".child {display:none}")         }         write("</STYLE>");     } } //當(dāng)菜單打開時(shí),頁面上菜單以下的東西的位置順序往下推,菜單合起時(shí),菜單以下的東西自動(dòng)上移。 function arrange() {     nextY = document.layers[firstInd].pageY + document.layers[firstInd].document.height;     for (i=firstInd+1; i<document.layers.length; i++) {         whichele = document.layers[i];         if (whichele.visibility != "hide") {             whichele.pageY = nextY;             nextY += whichele.document.height;         }     } } //初始化菜單 function initIt(){     if (!ver4) return;     if (NS4) {         for (i=0; i<document.layers.length; i++) {             whichele = document.layers[i];             if (whichele.id.indexOf("Child") != -1) whichele.visibility = "hide";        }         arrange();     }     else {         divColl = document.all.tags("DIV");         for (i=0; i<divColl.length; i++) {             whichele = divColl(i);             if (whichele.className == "child") whichele.style.display = "none";         }     } } //展開菜單的方法 function expandIt(ele) {     if (!ver4) return;     if (IE4) {         whichele = eval(ele + "Child");         if (whichele.style.display == "none") {             whichele.style.display = "block";         }         else {             whichele.style.display = "none";         }     }     else {         whichele = eval("document." + ele + "Child");         if (whichele.visibility == "hide") {             whichele.visibility = "show";         }         else {             whichele.visibility = "hide";         }         arrange();     } } onload = initIt; </script> </head> <body>       <div id="menuParent" class="parent">     <a href="#" onClick="expandIt('menu'); return false" >父菜單一</a></div>       <div id="menuChild" class="child">      <a href="#" target="_blank" >子菜單一</a><br>  <a href="#" target="_blank" >子菜單二</a><br>  <a href="#" target="_blank" >子菜單三</a></div>       <div id="Menu2Parent" class="parent">     <a href="#" onClick="expandIt('Menu2'); return false" >父菜單二</a></div>       <div id="Menu2Child" class="child">      <a href="#" target="_blank" >子菜單一</a><br>      <a href="#" target="_blank" >子菜單二</a><br>      <a href="#" target="_blank" >子菜單三</a></div>       <div id="Menu3Parent" class="parent">  <a href="#" onClick="expandIt('Menu3'); return false" >父菜單三</a></div>       <div id="Menu3Child" class="child">   <a href="#" target="_blank" >子菜單一</a><br> <a href="#" target="_blank" >子菜單二</a><br> <a href="#" target="_blank" >子菜單三</a></div> </body> </html>

【運(yùn)行效果】

 樹形目錄菜單運(yùn)行效果

【難點(diǎn)剖析】

本例中因?yàn)闆]有使用圖標(biāo),所以顯示效果并不是很理想,在實(shí)際應(yīng)用中,可以在節(jié)點(diǎn)前使用文件夾圖標(biāo)。本例的重點(diǎn)是對(duì)象的“visibility”屬性,其值為“show”時(shí)顯示子節(jié)點(diǎn),為“hide”時(shí)隱藏節(jié)點(diǎn)。

【源碼下載】

為了JS代碼的準(zhǔn)確性,請(qǐng)點(diǎn)擊:樹形目錄菜單 進(jìn)行本實(shí)例源碼下載 

標(biāo)簽: JS代碼  菜單