注意: 需要引入prototype.js // 可从网上下载
三个自定义文件
1、js文件 menu.js
2、.css, my.css
3、测试页面 test.html
menu.js:
//----2008-1-21 add by chen
var MenusClass = Class.create();
document.getElementsByClassName = function(classname) {
var retnode = [];
var myclass = new RegExp('\\b'+classname+'\\b');
var elem = this.getElementsByTagName('*');
for (var j = 0; j < elem.length; j++) {
var classes = elem[j].className;
if (myclass.test(classes)) retnode.push(elem[j]);
}
return retnode;
}
MenusClass.prototype.hideByClassName = function(classname) {
var items = document.getElementsByClassName(classname);
for (var j=0; j<items.length; j++) {
items[j].style.display = "none";
}
}
MenusClass.prototype.delCookie = function(sName){
var exp = new Date();
exp.setTime(exp.getTime() - 1);
var cval=this.getCookie(sName);
if(cval!=null) {
document.cookie = sName+"="+cval+";expires="+exp.toGMTString();
}
}
MenusClass.prototype.setCookie = function(sName,sValue,expiredays) {
var cookieString = sName + "=" + escape(sValue);
//time is expired?
if (expiredays>0) {
var exdate = new Date();
if(this.getCookie(sName)!=null){
this.delCookie(sName);
}
var argv=this.setCookie.arguments;
var argc=this.setCookie.arguments.length;
var path=(4<argc)?argv[4]:"/";
var domain=(5<argc)?argv[5]:".your.com"; //此处设置为域内Cookie
var secure=(6<argc)?argv[6]:false;
exdate.setDate(exdate.getDate()+expiredays);
cookieString = cookieString + "; expires=" + exdate.toGMTString() +"; path="+path+"; domain="+domain+((secure==true)?"; secure":"");
}
document.cookie = cookieString;
}
MenusClass.prototype.getCookie = function(cookieName) {
var aCookie = document.cookie.split("; ");
for (var j=0; j < aCookie.length; j++){
var aCrumb = aCookie[j].split("=");
if (escape(cookieName) == aCrumb[0])
return unescape(aCrumb[1]);
}
return null;
}
MenusClass.prototype.initialize = function(onClickClassname,showItemClassname,showItemPrefix,cookieName) {
this.onClickClassname=onClickClassname;
this.showItemClassname=showItemClassname;
this.showItemPrefix=showItemPrefix;
this.cookieName=cookieName;
}
MenusClass.prototype.onclick = function(cookieValue){
this.setCookie(this.cookieName,cookieValue,1);
this.hideByClassName(this.showItemClassname);
this.show();
}
MenusClass.prototype.show=function(){
var show_item = this.showItemPrefix+"1";
if (this.getCookie(this.cookieName) != null) {
show_item= this.showItemPrefix + this.getCookie(this.cookieName);
}
document.getElementById(show_item).style.display = "block";
}
my.css
#adminmenu {
PADDING-LEFT: 0px;
FONT-WEIGHT: normal;
FLOAT: left;
MARGIN: 10px 5px 5px;
WIDTH: 140px;
FONT-FAMILY: "宋体";
HEIGHT: auto;
TEXT-ALIGN: left;
}
#adminmenu .item {
MARGIN: 0px 3px 0px 3px;
WIDTH: 140px;
padding: 1px;
}
A.menu_title:link {
PADDING-RIGHT: 5px;
DISPLAY: block;
PADDING-LEFT: 15px;
FONT-WEIGHT: normal;
FONT-SIZE: 14px;
PADDING-BOTTOM: 5px;
MARGIN: 0px;
CURSOR: pointer;
COLOR: #1e3e93;
PADDING-TOP: 5px;
TEXT-DECORATION: none;
background-image: url(bg.gif);//菜单背景图
}
A.menu_title:visited {
PADDING-RIGHT: 5px;
DISPLAY: block;
PADDING-LEFT: 15px;
FONT-WEIGHT: normal;
FONT-SIZE: 14px;
PADDING-BOTTOM: 5px;
MARGIN: 0px;
CURSOR: pointer;
COLOR: #1e3e93;
PADDING-TOP: 5px;
TEXT-DECORATION: none;
background-image: url(beijing/wang_024.gif);
}
A.menu_title:hover {
PADDING-RIGHT: 5px;
DISPLAY: block;
PADDING-LEFT: 15px;
FONT-WEIGHT: bold;
FONT-SIZE: 14px;
PADDING-BOTTOM: 5px;
MARGIN: 0px;
CURSOR: pointer;
COLOR: #1e3e93;
PADDING-TOP: 5px;
TEXT-DECORATION: none;
background-image: url(blue.gif);
}
#adminmenu .item UL {
PADDING-RIGHT: 0px; DISPLAY: none; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-TOP: 0px; LIST-STYLE-TYPE: none
}
#adminmenu .item UL LI {
PADDING-RIGHT: 5px; DISPLAY: block; PADDING-LEFT: 15px; FONT-SIZE: 12px; PADDING-BOTTOM: 5px; MARGIN: 1px 0px 0px; COLOR: #1e3e93; PADDING-TOP: 5px; HEIGHT: 16px; BACKGROUND-COLOR: #eeeeee
}
#adminmenu .item UL LI A {
PADDING-RIGHT: 5px; DISPLAY: block; PADDING-LEFT: 25px; FONT-SIZE: 12px; PADDING-BOTTOM: 4px; MARGIN: -4px -5px -5px -15px; COLOR: #1e3e93; PADDING-TOP: 5px; HEIGHT: 16px; BACKGROUND-COLOR: #f4f4f4; TEXT-DECORATION: none
}
#adminmenu .item UL LI A:hover {
COLOR: #fff; BACKGROUND-COLOR: #bbbbbb; TEXT-DECORATION: underline
}
admin.html
<HTML xmlns="http://www.w3.org/1999/xhtml">
<HEAD><TITLE> cms</TITLE>
<META http-equiv=Content-Type content="text/html; charset=utf-8">
<SCRIPT src="tmenu.js"></SCRIPT>
<SCRIPT src="prototype.js"></SCRIPT>
<LINK href="my.css" type=text/css rel=stylesheet>
<SCRIPT language=javascript>
<!--
var menus_item=new MenusClass("menu_title","options","items_","cookie_menu");
//-->
</SCRIPT>
</head>
<body>
<DIV id=adminmenu>
<UL class=item><A class=menu_title onclick=menus_item.onclick(1)
href="#"
name=1>管理菜单1</A>
<UL class=options id=items_1>
<LI><A
href="">管理菜单1-1</A>
</LI>
<LI><A
href="#">管理菜单1-2</A>
</LI>
</UL>
</UL>
<UL class=item><A class=menu_title onclick=menus_item.onclick(2)
href="#" name=2>管理菜单2</A>
<UL class=options id=items_2>
<LI><A
href="#">管理菜单2-1</A>
</LI>
<LI><A
href="#">管理菜单2-2</A>
</LI>
<LI><A
href="#">管理菜单2-3</A>
</LI>
<LI><A
href="#">管理菜单2-4</A>
</LI>
</UL>
</UL>
<UL class=item><A class=menu_title onclick=menus_item.onclick(3)
href="#"
name=3>管理菜单3</A>
<UL class=options id=items_3>
<LI><A href="#">管理菜单3-1</A>
</LI>
<LI><href='#'>管理菜单3-2</A>
</LI>
<LI><A
href="#">管理菜单3-3</A>
</LI></UL>
</UL>
<SCRIPT language=javascript>
<!--
menus_item.show();
//-->
</SCRIPT>
</DIV>
</body>
</html>
分享到:
相关推荐
常用的JS后台导航菜单,可刷新不变 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xml:lang="UTF-8" lang="UTF-8"> &...
在本项目中,它可能用于处理用户登录状态的存储和读取,以便在页面刷新后仍能保持用户的登录信息。 【Less】 Less 是一种CSS预处理器,它允许开发者使用变量、嵌套规则、运算符等编程特性来编写CSS。Less可以提升...
【标签】"JS特效-菜单导航"表明这个后台界面的亮点在于其JavaScript实现的动态效果,特别是菜单导航部分。JavaScript是一种广泛用于网页动态效果的编程语言,它可以使得菜单在用户交互时有平滑的动画效果,如展开、...
第12章 CSS样式与JavaScript脚本 应用 458 12.1 应用CSS样式美化网站 459 实例289 利用DIV+CSS布局网站后台主页面 459 实例290 为主题添加CSS样式使界面更加 ...实例326 制作网站后管理页中自动伸缩的菜单 507
3. **状态保存**:在用户展开或折叠节点后,需要记住这些状态,以便在刷新页面或再次访问时恢复。这可以通过Cookie、SessionStorage或LocalStorage来实现。 **三、与数据库的结合** 1. **数据存储**:后台数据库...
9. **状态管理**:例如使用Session和Cookie来跟踪用户状态和购物车信息。 10. **错误处理和日志记录**:确保系统稳定运行,方便问题排查。 在【论文】部分,开发者可能会详细介绍系统的设计思路、技术选型、实现...
12. **Cookie管理**:JavaScript可以读取、设置和删除cookie,用于存储用户偏好设置或保持登录状态。 13. **JSON(JavaScript Object Notation)**:一种轻量级的数据交换格式,JavaScript可以方便地解析和生成JSON...
同时,系统可能会用到Session和Cookie来管理用户的会话状态,确保安全性。此外,考虑到用户体验,前端可能采用Ajax异步技术,实现无刷新更新,提高交互性。 总的来说,"JSP+SQL网上订餐"系统涉及的知识点包括:JSP...
8. **状态保持**:确保用户在页面间跳转后,导航的状态(如展开的子菜单)能够被记住。这可以通过URL参数、cookie或HTML5的`localStorage`来实现。 通过以上步骤,我们可以创建一个交互性强、视觉效果良好的左侧树...
订单状态管理(待支付、已支付、已发货、已完成等)也是重要组成部分。 5. **后台管理模块**:管理员可以管理商品信息、处理订单、查看用户反馈,进行数据统计等功能。 在实现过程中,可能使用到的技术栈有: - *...
2. **状态管理**:ASP.NET提供了多种状态管理技术,如Viewstate、Session、Cookie和Application。选择哪种方法取决于数据的持久性需求和性能考虑。 3. **控件事件处理**:在ASP.NET中,控件事件的处理需要在后台...
"高密商务信息港"是一个综合性的商务平台,其后台管理系统涵盖了多项关键功能,旨在提供高效、便捷的商务服务。这个平台的核心在于它的内容管理和用户交互能力,下面将详细阐述这些功能及其背后的IT知识点。 首先,...
这个ASP项目体现了电子商务网站的基本架构和功能实现,开发者可能使用ADO(ActiveX Data Objects)进行数据库操作,用Session和Cookie来跟踪用户状态,以及使用XMLHttpRequest进行异步请求以实现页面的部分刷新。...
站内搜索、栏目管理、视频播放(完全模仿优酷视频页面)、焦点图、静态...刷新上传图片、搜索引擎优化设置、数据备份恢复、伪静态设置、网上商城、订单管理、在线支付(支持支付宝、财付通、块钱等第三方支付平台)、...
为了提供更流畅的用户体验,新闻网站通常采用AJAX(Asynchronous JavaScript and XML)技术,允许后台数据更新而不刷新整个页面。这涉及XMLHttpRequest对象的使用,以及JSON数据格式的处理。 **Session和Cookie管理...
5. **购物车功能**:用户选择菜品后,系统需要实现购物车功能,包括添加、删除菜品,以及计算总价等操作,这涉及到服务器端的session管理和客户端的cookie技术。 6. **支付集成**:为了完成在线支付,系统可能集成...
开发者可能会使用ADO(ActiveX Data Objects)来处理数据库操作,使用Session和Cookie来管理用户会话,使用URL重写技术改善SEO,或者利用AJAX(Asynchronous JavaScript and XML)实现无刷新更新,提高用户体验。...
这一部分可能使用了AJAX技术,使得用户在不刷新页面的情况下,即可实时更新购物车状态。同时,为了处理用户的购物数据,可能运用了Cookie或LocalStorage等浏览器存储机制,实现用户购物数据的持久化。 后台管理模块...
该系统不仅实现了用户在线浏览菜单、下单、支付等功能,还兼顾了后台管理,包括订单处理、餐厅管理、菜品维护等业务流程。下面将详细介绍系统的设计理念、关键技术以及实现过程。 一、系统架构设计 1. 分层架构:...
-修正Expanded项和Checked项的状态在回发改变后不能保持的BUG。 -GetNodeById更名为FindNode,保持和FindControl一致命名。 -删除CheckedNodeIDArray属性,增加GetCheckedNodes和GetCheckedNodeIDs函数。 -...