本文实例讲述了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写在<head>节点中时,需要使用window.onload=function(){执行语句;} 延迟加载,不然引用DOM中对象时,会出现缺少对象 错误提示。
别一种解决方法,直接将所有javaScript 写在</html>
<!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遍历算法与技巧总结》及《JavaScript数学运算用法总结》
希望本文所述对大家JavaScript程序设计有所帮助。
新闻热点
疑难解答