二级树菜单,可以同时打开多个子菜单
如下类型

数据库结构如下:
为了方便全部程序的调试,有多余字段,使用时请删除多余字段.
bigclass表
bigclassid bigclassname
smallclass表
smallclassname,smallclassid,bigclassid,bigclassname
<!--#includefile="inc/conn.asp"-->
<tableborder="0"width="100%"height="200"cellspacing="0"cellpadding="0">
<tr>
<tdwidth="20%"height="200"bgcolor="#F0F0F0"valign=top>
<scriptlanguage="JavaScript">
<!--
FunctionshowLay()functionshowLay(divId){
varobjDiv=eval(divId);
if(objDiv.style.display=="none"){
eval("sp"+divId+".innerHTML='-'");
objDiv.style.display="";
}else{
eval("sp"+divId+".innerHTML='+'");
objDiv.style.display="none";
}
}
//-->
</script>
<%
dimrsTEMP,sqlTEMP
bigclassname=request("bigclassname")
smallclassname=request("smallclassname")
callopenDB()
sql="selectbigclassid,bigclassnamefrombigclass"
setrs=conn.execute(sql)
counter=0'---------------------------------------------------------------------ACOUNTERUSED
whilenotrs.eof
counter=counter+1
sqlTEMP="selectsmallclassnamefromsmallclasswherebigclassid="&rs("bigclassid")
setrsTEMP=conn.execute(sqlTEMP)
ifbigclassname<>rs("bigclassname")then
%>
<ahref="#"onclick="showLay('Layer<%=counter%>')"><spanid="spLayer<%=counter%>">+</span><%=rs("bigclassname")%></a><br>
<divid="Layer<%=counter%>"style="display:none;">
<%whilenotrsTEMP.eof%>
|-<aHREF="bookincategory.asp?bigclassname=<%=rs("bigclassname")%>&smallclassname=<%=rsTEMP("smallclassname")%>">
<%=rsTEMP("smallclassname")%></a><br>
<%
rsTEMP.movenext
wend
else
%>
<ahref="#"onclick="showLay('Layer<%=counter%>')"><spanid="spLayer<%=counter%>">-</span><%=rs("bigclassname")%></a><br>
<divid="Layer<%=counter%>">
<%whilenotrsTEMP.eof%>
|-<aHREF="bookincategory.asp?bigclassname=<%=rs("bigclassname")%>&smallclassname=<%=rsTEMP("smallclassname")%>">
<%=rsTEMP("smallclassname")%></a><br>
<%
rsTEMP.movenext
wend
endif
%>
</div>
<%
rs.movenext
wend
%>
</td>
<tdwidth="80%"height="200"bgcolor="#F7FDFD">
</td></tr></table>










本文介绍了一种使用ASP实现的二级树形菜单结构,该菜单能够同时展开多个子菜单,并提供了完整的代码示例。文章展示了如何通过数据库查询填充菜单项,并利用JavaScript控制菜单的折叠与展开。
131

被折叠的 条评论
为什么被折叠?



