nba23() 无限级树状菜单Tree Menu (改进版)

thrillers 2003-08-15 11:53:17
实现了点击大类展开小类的效果

代码如下:


<html>
<head>
<title>无限级树状菜单Tree Menu (改进版)</title>
<!-- 在一个国外体育网中“盗用”的js ,我作了些修改和添加了注析说明,感觉有点类CSDN的菜单,实现了点击大类展开菜单的效果 -->
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<meta content="MSHTML 5.00.3502.5390" name=Generator >

<style type=text/css>
/* CSS 请自己再增加必要的选项 */
a {font: normal 12px 宋体; color: black; text-decoration: none; }
a:link {font: normal 12px 宋体; color: black; text-decoration: none; }
a:visited {font: normal 12px 宋体; color: black; text-decoration: none; }
a:hover {font: normal 12px 宋体; color: black; text-decoration: none; }
.icoface { border: 1px solid black; width: 9px; height: 9px; overflow: hidden; font: normal 7px 宋体; line-height: 8px; text-align: center; cursor: default; }
.line-hight { font: normal 8px 宋体; }
</style>

<script language=javascript>
function Nba23() //定义树状菜单对象
{
this.start=function() //菜单开始,bTop表示是否为最外层。
{
document.writeln("<table cellpadding=1 cellspacing=0>");
}

this.end=function() //菜单结束
{
document.writeln("</table>");
}

this.addmenu=function(cText,cLink,bChild,bShow) //为菜单增加项,参数依次为:菜单文字、菜单链接、是否有子菜单、子菜单是否显示。
{
document.writeln("<tr><td><nobr><span class=icoface "+(bChild? "onclick=menuChange(this)":"")+">"
+(bChild?(bShow?"-":"+"):"·")+"</span><span class=line-hight class=line-hight "+(bChild? "onclick=menuChange(this)":"")+">"+" <a href="+cLink+">"+cText+"</a></span></nobr></td></tr>");



}// 想让连接在新窗口中打开,则把上面的<a href="+cLink+" >改为:<a href="+cLink+" target=_blank>

this.childStart=function(bShow) //子选项开始,bShow为是否显示
{
document.writeln("<tr style='display:"+(bShow?"block":"none")+"'><td>");
document.writeln("<table cellpadding=1 cellspacing=0 style='margin-left:12px;'>");
}

this.childEnd=function() //子选项结束
{
document.writeln("</table>");
document.writeln("</td></tr>");
}
}

function menuChange(obj) //控制菜单显示/隐藏
{
obj=obj.parentNode.parentNode.parentNode;
obj.nextSibling.style.display=(obj.nextSibling.style.display=='none'?'block':'none');
obj.cells[0].childNodes[0].childNodes[0].innerText=(obj.nextSibling.style.display=='none'?'+':'-')
}
</script>
</head>

<body>
<br/>
<a>无限级树形菜单,Make by csdn nba23 8/6/2003 </a>
<br/><br/>
<script language=javascript>
//生成菜单开始
var cmsNba23=new Nba23();
cmsNba23.start();
cmsNba23.addmenu("我的专家门诊","#url",1,0); //后面两个参数分别表示是否有子菜单、子菜单是否显示
cmsNba23.childStart(0); //参数与上面最后一个参数一致,如上面若设为1, ,此行的参数就应该设为1,初始状态就为已伸展
cmsNba23.addmenu("我的问题","#url",0);
cmsNba23.addmenu("我参与问题","#url",0);
cmsNba23.addmenu("我得分问题","#url",0);
cmsNba23.addmenu("我的专家分","#url",0);
cmsNba23.addmenu("我的收藏夹","#url",0);
cmsNba23.addmenu("短消息","#url",0);
cmsNba23.addmenu("维护FAQ列表","#url",0);
cmsNba23.addmenu("我的信誉分变化记录","#url",0);
cmsNba23.childEnd();
cmsNba23.addmenu("WEB开发","#url",1,0) //后面两个参数分别表示是否有子菜单,子菜单是否显示
cmsNba23.childStart(0); //参数与上面最后一个参数一致
cmsNba23.addmenu("ASP","#url",0);
cmsNba23.addmenu("Java JSP/Servlet/JavaBean ","#url",0);
cmsNba23.addmenu("PHP","#url",0);
cmsNba23.addmenu("JavaScript ","#url",0);
cmsNba23.addmenu("CGI ","#url",0);
cmsNba23.addmenu("XML/SOAP ","#url",0);
cmsNba23.addmenu("HTML(CSS) ","#url",0);
cmsNba23.addmenu("其它 ","#url",0);
cmsNba23.childEnd();

cmsNba23.addmenu("多媒体/设计","#url",1,1);
cmsNba23.childStart(1); //参数与上面最后一个参数一致,同时为0则为隐藏,如上面若设为1,0 ,此行的参数就应该设为0,初始状态就为已收缩
cmsNba23.addmenu("网页设计(Dreamweaver等)","#url",0);
cmsNba23.addmenu("图象工具使用","#url",0);
cmsNba23.addmenu("Flash流媒体 ","#url",0);
cmsNba23.addmenu("多媒体设计(3DMaX, Maya等)","#url",0);
cmsNba23.childEnd();

cmsNba23.addmenu("其它","#url",1,0); //后面两个参数分别表示是否有子菜单、子菜单是否显示
cmsNba23.childStart(0); //参数与上面最后一个参数一致
cmsNba23.addmenu("子菜单一 (含)","#url",1,0);
cmsNba23.childStart(0);
cmsNba23.addmenu("子菜单一(1)","#url",0);
cmsNba23.addmenu("子菜单一(2)","#url",0);
cmsNba23.addmenu("子菜单一(3) (含)","#url",1,0);
cmsNba23.childStart(0);
cmsNba23.addmenu("子菜单一(3)(a)","#url",0);
cmsNba23.addmenu("子菜单一(3)(b)","#url",0);
cmsNba23.addmenu("子菜单一(3)(c)","#url",0);
cmsNba23.childEnd();
cmsNba23.childEnd();
cmsNba23.addmenu("子菜单二","#url",0);
cmsNba23.addmenu("子菜单三","#url",0);
cmsNba23.addmenu("子菜单四","#url",0);
cmsNba23.addmenu("子菜单五","#url",0);
cmsNba23.addmenu("子菜单六","#url",0);
cmsNba23.childEnd();

cmsNba23.end();
//结束生成菜单函数
</script>
</body>
</html>


...全文
72 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
fason 2003-08-16
  • 打赏
  • 举报
回复
http://www.ceocio.net/fason/dtree.asp
nba23 2003-08-16
  • 打赏
  • 举报
回复
兄弟果然好眼法!!

bChild? "onclick=menuChange(this)":""这个小玄机终于有人看破了

1,451

社区成员

发帖
与我相关
我的任务
社区描述
多媒体/设计/Flash/Silverlight 开发 图象工具使用
社区管理员
  • 图象工具使用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧