注册 登录
编程论坛 ASP技术论坛

请教:递归菜单如何实现打开页面时不用鼠标点击就能显示一级菜单。

atian 发布于 2021-11-04 23:53, 1208 次点击
请教:递归菜单如何实现打开页面时不用鼠标点击就能显示一级菜单。
每次进去后,都要用鼠标点击一下才能显示,太麻烦了,能不能一进去就显示所有的一级菜单。
只有本站会员才能查看附件,请 登录


程序代码:
<%@LANGUAGE="VBSCRIPT" CODEPAGE="936"%>
<%
dataurl
=Server.MapPath("menutree.mdb")'数据库地址
dim conn,strQuery,rs
set conn = server.CreateObject("adodb.connection")
conn.Open
"PROVIDER=MICROSOFT.JET.OLEDB.4.0;DATA SOURCE="&dataurl
strQuery
="select * from menufun"
set rs=server.createobject("adodb.recordset")
rs.open strQuery,conn,
1,1
allnum
=rs.RecordCount
'取得最大的层数MaxLevel
MaxLevel=1            
for i=1 to allnum

 
if rs("PartLevel")>MaxLevel then
    MaxLevel
=rs("PartLevel")

 
else
    MaxLevel
=MaxLevel

 
end if

 rs.movenext
next
rs.close
set rs=nothing
%>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title></title>
<style type="text/css">
<!--
td
{
    font-size
: 12px;
}
-->
</style>
<script language="javascript">
<!--
function divshow(cmy1,cmy2,cmy3)
//展开/合并菜单函数
{
  
if(document.all("div"+cmy1+cmy2+cmy3).style.display==""){
    document.all(
"div"+cmy1+cmy2+cmy3).style.display="none"
  }
else{
    document.all(
"div"+cmy1+cmy2+cmy3).style.display=""
  }
}
//-->
</script>
<base target="main">
</head>
<body topmargin="0" >
<table border="0" cellpadding="0" cellspacing="0">
<tr onClick="javascript:divshow(1,0,1);" style="cursor:hand"><TD><img src="images/admin.gif">点击选择</TD></tr>
<%
dim toumh(100) '定义用于存放菜单前显示树图片的数组,如果应用时的最大级数大于十,请扩大数组维数
call menutree(1,0,MaxLevel,1)'首次调用菜单输出函数
'
第一个参数:菜单的级数
'
第二个参数:父菜单的ID,一级菜单默认为零
'
第三个参数:菜单的最大级数
'
第四个参数:用于区分层的名称,方便实现菜单的展开合并
%>
</table>
<%
'funno  菜单的级数
'
funcid  父菜单的ID,一级菜单父级ID值为0
'
MaxLevel  菜单的最大级数
'
divno  用于区分层的名称,方便实现菜单的展开合并
'
menutree()  数形菜单输出函数
function menutree(funno,funcid,MaxLevel,divno)
  
dim rsfun,numfun,funcidfun
  strQuery1
="select * from menufun where sup_funcid='"&funcid&"'"
  
set rsfun=server.createobject("adodb.recordset")
  rsfun.open strQuery1,conn,
1,1
  numfun
=rsfun.RecordCount
  response.Write(
"<tr><td>")
  response.Write(
"<div id='div"&funno&funcid&divno&"' style='display:none'>")'输出层,并根据相关参数给层定义唯一的ID名称
  response.Write("<table border='0' cellpadding='0' cellspacing='0'>")
  
for j=1 to numfun
  funcidfun
=rsfun("funcid")
  
if j=numfun then   '判断是否是本级菜单的最后一个
    toumh(funno)="space.gif"  '是则输出空白图片space.gif
  else
    toumh(funno)
="line_v.gif" '否则输出竖线图片line_v.gif
  end if
   
'判断是否有下级菜单
    strQuery2="select * from menufun where sup_funcid='"&funcidfun&"'"
   
set rsfun2=server.createobject("adodb.recordset")
    rsfun2.open strQuery2,conn,
1,1
    numfun2
=rsfun2.RecordCount
   
'如果numfun2>0则有,反之则无
    if numfun2 > 0 then
      response.Write(
"<tr onClick='javascript:divshow("&funno+1&","&funcidfun&","&j&");' style='cursor:hand'>")
         
'用单击事件调用展开/合并菜单函数
    else
      response.Write(
"<tr style='cursor:hand'>")
   
end if
    response.Write(
"<td>")
   
if numfun2 > 0 then
      treeico
="open_normal.gif"
      
if j=numfun then
        treeico
="open_end.gif"
      
end if      
   
else
      treeico
="none_normal.gif"
      
if j=numfun then
        treeico
="none_end.gif"
      
end if      
   
end if
   
for m=1 to cint(funno)-1    '根据当前菜单的级数输出菜单前的数形图片
      response.Write("<img src='images/"&toumh(m)&"' align='absMiddle'>")
   
next
   
if not rsfun("enable") then    '判断菜单项是否可用,不可用的菜单名用#FF0000色显示
       response.Write("<img src='images/"&treeico&"' align='absMiddle'><font color='#ff0000'>"&rsfun("funcname")&"</font>")'输出不可用菜单名
    else
        
if numfun2>0 then
        response.Write(
"<img src='images/"&treeico&"' align='absMiddle'>"&rsfun("funcname"))
        
else
        response.Write(
"<img src='images/"&treeico&"' align='absMiddle'>"&rsfun("funcname"))
'输出可用菜单名
        end if
   
end if
    response.Write(
"</td>")
    response.Write(
"</tr>")
   
if cint(funno)<cint(MaxLevel) then
      
call menutree(cint(funno)+1,funcidfun,MaxLevel,j)  '递归调用 menutree()函数
    end if
    rsfun.movenext
  
next
  
'response.Write("</td></tr>")
  response.Write("</table></div>")
  response.Write(
"</td></tr>")
end function
%>

</body>
</html>


[此贴子已经被作者于2021-11-4 23:55编辑过]

1 回复
#2
atian2021-11-05 00:23
全部源文件
只有本站会员才能查看附件,请 登录
1