20107 月27
buffalo+list+ul+li 实现Ajax多级菜单
源代码
<html> <head> <meta http-equiv="Content-Type" content="text/html; charset=gbk"> <title>LeftMenu</title> <LINK href="css/menu.css" type=text/css media=screen rel=stylesheet> <script language="javascript" src="script/prototype.js"></script> <script language="javascript" src="script/buffalo.js"></script> </head>
<script language="javascript">
var endPointTop = '/${globals_sys_basename}/buffalo';//globals_sys_basename应用根目录
var waitingImg = '/${globals_sys_basename}/images/oa/loading.gif';
var loadingImg = '/${globals_sys_basename}/images/oa/loading.gif';
var userId = '$!{user.getLoginname()}';
var deptId = '$!{user.getUnitid()}';
var alreadyOpenTableId = null;
var hrefBaseValue = null;
//HTTP://WWW.WIZZER.CN
function getUl(e) {
for (var i = 0; i < e.childNodes.length; i ++) {
if (e.childNodes[i].nodeName.toUpperCase() == "UL")return true;
}
return false;
}
function subMenu(e, menuId) {//动态增加下级菜单
if (getUl(e))return;
try {
var buffalo = new Buffalo(endPointTop);
buffalo.remoteCall("desktopService.getSubMenu", [userId,menuId], function(reply) {
//desktopService.getSubMenu ajax调用后台方法,传递用户名、一级栏目ID
var str = reply.getResult();//返回ArrayList对象或List对象
if (str.length>0) {
var ulElem = document.createElement("ul");
var temp = "";
ulElem.className = "MenuLevel2";
ulElem.ID = "MENU_" + menuId + "S";
ulElem.style.display = "";
for (var i = 0; i < str.length; i++) {
temp += "<li id='MENU_"+str[i].id+"' class='level2' onclick=\"subMenu(this,'" + str[i].id + "');menuClick(this);\" ><div>";
if (str[i].ext3 != null && str[i].ext3 != "") {
temp += "<img src='/$!globals_sys_basename/private/Icons/" + str[i].ext3 + "'>";//小图标
}
temp += "" + str[i].name + "</div></li>";
}
ulElem.innerHTML = temp;
e.appendChild(ulElem);
}
});
} catch (ex) {
}
}
function closeMenu() {
if (alreadyOpenTableId == null) return;
alreadyOpenTable = document.all(alreadyOpenTableId);
if (alreadyOpenTable.childNodes.length > 1){
targetTable = alreadyOpenTable.childNodes[1];
}else{return;}
targetTable.style.display = "none";
alreadyOpenTableId = null;
}
function menuClick(e) {
var currentTableSrc = e;
if (currentTableSrc.id != alreadyOpenTableId && currentTableSrc.id!=alreadyOpenTableId+"0001") closeMenu();
targetTableId = currentTableSrc.id + "S";
if (e.childNodes.length > 1){
targetTable = e.childNodes[1];
}else{targetTable=null;}
if (targetTable == null)return;
if (targetTable.style.display == "none") {
targetTable.style.display = '';
alreadyOpenTableId = currentTableSrc.id;
} else {
targetTable.style.display = "none";
}
}
</script>
<body style="margin: 0; padding: 0; overflow: auto; " marginwidth="0" topmargin="0" leftmargin="0" marginheight="0">
<ul id=MenuUl>
#foreach($obj in $list)//使用模板语言循环出第一级菜单
<li id="MENU_$!{obj.getId()}" onclick="subMenu(this,'$!{obj.getId()}');menuClick(this);"><div>#if(${obj.getExt3()})<img src="/$!globals_sys_basename/private/Icons/$!{obj.ext3}">#end $!{obj.getName()}</div>
</li>
#end
</ul>
</body>
</html>
menu.css样式表
body {
background: #d8edfc;
font-size: 12px;
font-family: 宋体;
scrollbar-base-color: #dbecf8;
scrollbar-arrow-color: #2a8ed1;
scrollbar-track-color: #bdddf2;
scrollbar-3dlight-color: #2886c5;
scrollbar-darkshadow-color: #2886c5;
scrollbar-face-color: #dbecf8;
scrollbar-shadow-color: #dbecf8;
margin: 1px;
border: 3px solid #4891c6;
}
#MenuUl {
list-style:none;
margin: 0px;
padding: 0px;
background: #d8ebf7;
}
ul.MenuLevel2 {
list-style:none;
margin: 0px;
padding: 0px;
background: #d8ebf7;
}
.level1 {
font-weight: bold;
color: #005790;
padding-bottom: 1px;
}
.level2 {
font-weight: normal;
color: #005790;
}
.level3Head {
font-weight: normal;
color: #2479b6;
width: 100%;
height: 21px;
padding-left: 61px;
padding-top: 4px;
background: url(images/menu_bg_head.gif) no-repeat;
cursor: hand;
}
.level33 {
font-weight: normal;
color: #2479b6;
width: 100%;
height: 21px;
padding-left: 61px;
padding-top: 4px;
background: url(images/menu_bg_3.gif) no-repeat;
cursor: hand;
}
.level32 {
font-weight: normal;
color: #2479b6;
width: 100%;
height: 21px;
padding-left: 61px;
padding-top: 4px;
background: url(images/menu_bg_2.gif) no-repeat;
cursor: hand;
}
.level1Style {
/*font-size:18px; */
width: 155px;
height: 24px;
background: url(images/menu_btn_bg.gif) no-repeat;
padding-left: 20px;
padding-top: 4px;
cursor: hand;
}
.level1SelectedStyle {
width: 155px;
height: 24px;
background: url(images/menu_btn_bg_selected.gif) no-repeat;
padding-left: 20px;
padding-top: 4px;
cursor: hand;
}
.level2Style {
width: 100%;
height: 20px;
background: #8ec4e9;
padding-left: 30px;
padding-top: 4px;
border-top: 1px solid #eff6fb;
cursor: hand;
}
本文地址:https://wizzer.cn/archives/571 , 转载请保留.