基於 Ajax 的無限級菜單 2

來源:互聯網
上載者:User

首先建立一個資料表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實現!
}

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.