基于 Ajax 的无限级菜单(二)

原创 2006年05月28日 23:07:00

首先建立一个数据表menu

mId  菜单主键
name 菜单名称
url  菜单链接
father 低级菜单ID
sub  是否最底层菜单(用于判断是否还可以继续展开)
target 菜单链接目标(用ajax方式打开时作为显示id)
pa   菜单参数(这项用于ajax方式打开菜单)

制作一个菜单对象类

class Menu{
private int mId;
private String name;
...//其它成员

public getMid(){
return mId;
}
public setMid(int mId){
this.mId = mId;
}
....//其它成员的get set方法,
}

 

 

另一个是操作类

class MenuOpt(){
public Vector getMenus(int father){
Vector vector = new Vector();
//这里是取得父级菜单ID为father的全部菜单
//并封装进Vector的一个对象中。。
return vector;
}
}

其次就是一般的jsp文件了。但要注意以前说过的,不要包含<html><body>标签!
menu.jsp:

<%@page contentType="text/html; charset=GB2312"%>
<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<!--前面用到了JSTL的标签定义(学JSP的强烈推荐!)-->
<jsp:useBean id="menu" scope="page" class="ycoe.basic.MenuOpt"/>
<jsp:setProperty name="menu" property="father" value="${param.father}"/>
<div>
<c:forEach var="m" items="${menu.vector}" varStatus = "c">
<c:choose>
<c:when test="${m.sub eq 'Y'}">
<div onClick="showMenu('${m.mid}','${m.url}','${m.target}','father=${m.mid}')">
<img src="pic/menu0.gif" id="img${m.mid}" alt="" style=" cursor:hand;">
<a href="#" class="text1">${m.name}</a>
</div>
<div style="display:none;" id="tr${m.mid}">
<div style="padding-left:12pt" id="${m.mid}"></div>
</div>
</c:when>
<c:otherwise>
<div onclick="openMenu('${m.url}','${m.target}','${m.pa}');">
<img src="pic/menu1.gif" id="img${m.mid}" alt="">
<a href="#" class="text1">${m.name}</a>
</div>
</c:otherwise>
</c:choose>
</c:forEach>
</div>

menu.js:

//operMenu(打开下拉菜单的ID,打开的地址,链接打开的目标,参数)。
//这是用在menu.jsp的方法
function showMenu(id,url,target,param){
var trObj = document.getElementById("tr"+id);
var tdObj = document.getElementById(id);
//try{
if(document.getElementById("tr"+id).style.display == "none"){
//显示菜单
if(tdObj.innerHTML == null || tdObj.innerHTML == ""){
//提取数据
document.getElementById("tr"+id).style.display = "";
document.getElementById("img"+id).src = "pic/menu2.gif"
Bcandy(id,"page/menu.jsp",param,"");
openMenu(url,target,param);
}else{
//如果里面有内容,直接显示
document.getElementById("tr"+id).style.display = "";
document.getElementById("img"+id).src = "pic/menu2.gif"
openMenu(url,target,param);
}
//Bcandy(target,url,param,"");//打开菜单链接
}else{
//隐藏菜单
document.getElementById("tr"+id).style.display = "none";
document.getElementById("img"+id).src = "pic/menu0.gif"
}
//}catch(e){}
}

//打开菜单
function openMenu(url,target,param){
//这里不用我写了吧。有好几种实现方法,建议使用ajax实现!
}

CSS实现无限级菜单

css菜单演示#{margin:0;padding:0;border:0;}/*要定义margin属性为0px;否则下拉会居中*/body { font-family: arial, 宋体, seri...
  • adverse
  • adverse
  • 2007年05月15日 20:33
  • 1489

PHP+JS无限级可伸缩菜单详解(递归方法)

PHP+JS无限级可伸缩菜单详解(递归方法)一般在CMS系统后台中都要用到的类别管理部分的精华--无限级分类菜单,对于新手来说,这个可能有一定难度,但是今天听完我细细道来,相信以后大家就都会弄这东东了...
  • fkedwgwy
  • fkedwgwy
  • 2008年06月18日 13:37
  • 3098

js实现左侧无限级菜单

以前在网上搜到很多js写的菜单,但是都是在静态页面中写死了。最近写了一个通过json数组来生成的菜单(兼容ie6,7,8;ff);代码如下: //菜单内容json数组 //数据结构【fatheri...
  • yuxingxing198812
  • yuxingxing198812
  • 2013年11月25日 16:05
  • 3796

一个更简单的无限级分类菜单代码

一个更简单的无限级分类菜单代码  一个更简单的无限级分类菜单代码首先要感谢terry39的指点,元旦闲来无事,我就把他所讲的原理简单实现一下,这个程序的关键就在于数据表的设计很有特色,不用递归,依靠个...
  • SmartJavaer
  • SmartJavaer
  • 2007年04月30日 22:01
  • 1814

PHP+JS无限级可伸缩菜单详解

//所用数据表的结构CREATE TABLE `cr_columninfo` (  `columnid` int(4) NOT NULL auto_increment,  `columnfatheri...
  • chenhang21367
  • chenhang21367
  • 2007年04月20日 21:27
  • 837

实现基于Ajax的无限级菜单

实现基于Ajax的无限级菜单[1] 框架特点:  支持Form的无闪提交(方法有点笨)   支持MVC框架,即支持传统网页架构   多线程并发请求(要语言支持线程)   动态加载文件,只加载有用的!处...
  • JOHNCOOLS
  • JOHNCOOLS
  • 2007年03月28日 16:45
  • 952

递归方法无限级菜单--javascript v1.0

菜单遍历用递归的方法最简单,不用考虑有多少级,可以实现全部遍历,前提是后台代码的规范性,一般从后台返回的数据是json格式,这里有两种结构,一种是用pid的形式,一种是用children的形式。...
  • zy1281539626
  • zy1281539626
  • 2017年05月19日 16:53
  • 420

实现基于Ajax的无限级菜单

实现基于Ajax的无限级菜单框架特点: 支持Form的无闪提交(方法有点笨) 支持MVC框架,即支持传统网页架构 多线程并发请求(要语言支持线程) 动态加载文件,只加载有用的!处理了Ajax框架臃肿的...
  • SmartJavaer
  • SmartJavaer
  • 2007年01月25日 12:52
  • 812

实现基于Ajax 的无限级菜单

 Ajax 基础 现在到处都有这方面的教程,我重点说一下我自己搞的一个框架。特点:支持Form的无闪提交(方法有点笨)支持MVC框架,即支持传统网页架构多线程并发请求(要语言支持线程)动态加载文件,只...
  • tian_lee
  • tian_lee
  • 2008年07月16日 14:32
  • 260

基于 Ajax 的无限级菜单

现在到处都有这方面的教程,我重点说一下我自己搞的一个框架。特点:支持Form的无闪提交(方法有点笨)支持MVC框架,即支持传统网页架构多线程并发请求(要语言支持线程)动态加载文件,只加载有用的!处理了...
  • jeseechen
  • jeseechen
  • 2006年05月28日 23:05
  • 514
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:基于 Ajax 的无限级菜单(二)
举报原因:
原因补充:

(最多只允许输入30个字)