JavaScript+CSS实现的可折叠二级菜单实例
来源: 阅读:782 次 日期:2016-08-04 16:25:31
温馨提示: 小编为您整理了“JavaScript+CSS实现的可折叠二级菜单实例”,方便广大网友查阅!

本文实例讲述了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程序设计有所帮助。

更多信息请查看网络编程
由于各方面情况的不断调整与变化, 提供的所有考试信息和咨询回复仅供参考,敬请考生以权威部门公布的正式信息和咨询为准!
关于我们 | 联系我们 | 人才招聘 | 网站声明 | 网站帮助 | 非正式的简要咨询 | 简要咨询须知 | 加入群交流 | 手机站点 | 投诉建议
工业和信息化部备案号:滇ICP备2023014141号-1 云南省教育厅备案号:云教ICP备0901021 滇公网安备53010202001879号 人力资源服务许可证:(云)人服证字(2023)第0102001523号
云南网警备案专用图标
联系电话:0871-65317125(9:00—18:00) 获取招聘考试信息及咨询关注公众号:hfpxwx
咨询QQ:526150442(9:00—18:00)版权所有:
云南网警报警专用图标
Baidu
map