本文實例講述了JavaScript+CSS實現的可折疊二級選單。分享給大家參考,具體如下:
.aspx檔:
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="NavigateMenu.aspx.cs" Inherits="NavigateMenu" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" > <head runat="server"> <title>无标题页</title> <script type="text/javascript" src="JScript.js" ></script> <style type="text/css"> *{ margin: 0px; padding: 0px; border:0px; } #nav{ width: 200px; margin: 0px; padding: 0px; font-size: 14px; line-height: 30px; } #nav li{ width: 180px; padding-left: 20px; padding-bottom: 1px; list-style-image: none; list-style-type: none; background-color: #FFFFFF; float: left; } #nav a{ padding-left: 20px; background-color: #BFBFBF; display: block; text-decoration: none; } #nav a:hover { background-color: #FF9175; } #nav li ul{ padding-top: 1px; list-style-image: none; list-style-type: none; } #nav li li{ padding-left: 0px; } #nav ul a{ background-color: #EBEBEB; } .cx { display:none; visibility:hidden; } .ex { display:inherit; visibility:inherit; } </style> <script type="text/javascript" > window.onload=function() { statUp(); } </script> </head> <body> <form id="form1" runat="server"> <div id="Parent"> <ul id="nav"> <li><a href="javascript:void(0);" onclick="doMenu(this)">菜单1</a> <ul> <li><a href="javascript:void(0);">菜单1_1</a></li> <li><a href="javascript:void(0);">菜单1_2</a></li> </ul> </li> <li><a href="javascript:void(0);" onclick="doMenu(this)">菜单2</a> <ul> <li><a href="javascript:void(0);">菜单2_1</a></li> <li><a href="javascript:void(0);">菜单2_2</a></li> </ul> </li> <li><a href="javascript:void(0);" onclick="doMenu(this)">菜单3</a> <ul> <li><a href="javascript:void(0);">菜单3_1</a></li> <li><a href="javascript:void(0);">菜单3_2</a></li> </ul> </li> </ul> </div> </form> </body> </html>
js檔:
function doMenu(obj){ var items=obj.parentNode.getElementsByTagName("ul"); var itmUl; if(items.length>0){ itmUl=items[0]; } if(itmUl.className!="ex"){ cxAll(); itmUl.className="ex"; }else{ itmUl.className="cx"; } } function statUp(){ cxAll(); } function cxAll(){ var ulDom=document.getElementById("nav"); var items=ulDom.getElementsByTagName("ul"); for (var i=0;i<items.length;i++) { items[i].className="cx"; } }
在這裡要注意的是延遲載入的問題,由於頁面載入時需要執行預處理操作statUp()方法,js單獨寫成一個檔案或js寫在
節點中時,需要使用window.onload= function(){執行語句;} 延遲加載,不然引用DOM中物件時,會出現缺少物件錯誤提示。別一種解決方法,直接將所有javaScript 寫在
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=gb2312" /> <title>菜单</title> <script type="text/javascript" src="Untitled-3.js"></script> <style> *{ margin: 0px; padding: 0px; border:0px; } #nav{ width: 200px; margin: 0px; padding: 0px; font-size: 14px; line-height: 30px; } #nav li{ width: 180px; padding-left: 20px; padding-bottom: 1px; list-style-image: none; list-style-type: none; background-color: #FFFFFF; float: left; } #nav a{ padding-left: 20px; background-color: #BFBFBF; display: block; text-decoration: none; } #nav a:hover { background-color: #FF9175; } #nav li ul{ padding-top: 1px; list-style-image: none; list-style-type: none; } #nav li li{ padding-left: 0px; } #nav ul a{ background-color: #EBEBEB; } .cx { display:none; visibility:hidden; } .ex { display:inherit; visibility:inherit; } </style> </head> <body> <div id="Parent"> <ul id="nav"> <li><a href="javascript:void(0);" onclick="doMenu(this)">菜单1</a> <ul> <li><a href="javascript:void(0);">菜单1_1</a></li> <li><a href="javascript:void(0);">菜单1_2</a></li> </ul> </li> <li><a href="javascript:void(0);" onclick="doMenu(this)">菜单2</a> <ul> <li><a href="javascript:void(0);">菜单2_1</a></li> <li><a href="javascript:void(0);">菜单2_2</a></li> </ul> </li> <li><a href="javascript:void(0);" onclick="doMenu(this)">菜单3</a> <ul> <li><a href="javascript:void(0);">菜单3_1</a></li> <li><a href="javascript:void(0);">菜单3_2</a></li> </ul> </li> </ul> </div> </body> </html> <script type="text/javascript"> function doMenu(obj){ var items=obj.parentNode.getElementsByTagName("ul"); var itmUl; if(items.length>0){ itmUl=items[0]; } if(itmUl.className!="ex"){ cxAll(); itmUl.className="ex"; }else{ itmUl.className="cx"; } } function statUp(){ cxAll(); //var ulDom=document.getElementById("nav"); //var items=ulDom.getElementsByTagName("ul"); } function cxAll(){ var ulDom=document.getElementById("nav"); var items=ulDom.getElementsByTagName("ul"); for (var i=0;i<items.length;i++) { items[i].className="cx"; } } statUp(); </script>
更多關於JavaScript相關內容有興趣的讀者可查看本站專題:《JavaScript查找演算法技巧總結》、《JavaScript動畫特效與技巧匯總》、《JavaScript錯誤與調試技巧總結》、《JavaScript資料結構與演算法技巧總結》、《JavaScript遍歷演算法與技巧總結》及《Java數學運算用法總結》
希望本文所述對大家JavaScript程式設計有所幫助。