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

如何实现该二级菜单的功能呢

aaaaa2004 发布于 2006-03-29 09:05, 4034 次点击
如何实现该二级菜单的功能呢
是这样的有
a
b
c
三个纵向的一级菜单,现在要实现如果点击a就会显示出二级菜单e,f,g当然再次点a二级菜单会恢复原来一级菜单样子,同理如果点击b会显示二级菜单h, k点击c也同样会显示二级菜单,请问应该如何实现呢?最好有代码呀,非常感谢
30 回复
#2
aaaaa20042006-03-29 09:14
请帮忙
#3
aaaaa20042006-03-29 09:59
请帮忙
#4
aaaaa20042006-03-29 10:06
请帮忙,谢谢
#5
aaaaa20042006-03-29 11:43
请帮忙,谢谢
#6
favoriteran2006-03-29 11:48
看不明白你到底要实现一个什么?联运菜单吗?说清楚一点,要不人家怎么去帮你啊?
#7
yms1232006-03-29 12:46

按照楼主的意思是说
a
b
c
点击a后
a [下拉菜单]
b
c
再点a后
a
b
c
下拉菜单消失这种效果?

#8
yms1232006-03-29 12:48
或者说是
a
b
c
点击a后
a e f g
b
c
再点a后
a
b
c
efg消失,这种效果?
#9
aaaaa20042006-03-29 13:00
不好意思可能我没有说清楚是这样的
现有一级菜单a,b,c
a
b
c
点击a后显示[下拉菜单]e,f,g
b
c

再点a后
a
b
c
下拉菜单e,f,g消失
#10
aaaaa20042006-03-29 13:19
yms123能帮忙吗?
#11
yms1232006-03-29 13:32
回复:(aaaaa2004)如何实现该二级菜单的功能呢
<script language="javascript">
var IsShow;
IsShow="F";
function ShowList(Item)
{
var LHtml;
if(IsShow=="F")
{
LHtml="<select name=D1>";
if(Item=="a")
{
LHtml+="<option>b</option>";
LHtml+="<option>c</option>";
LHtml+="<option>d</option>";
LHtml+="</select>";
this.layer(0).innerHTML=LHtml;
}
if(Item=="b")
{
LHtml+="<option>e</option>";
LHtml+="<option>f</option>";
LHtml+="<option>g</option>";
LHtml+="</select>";
this.layer(1).innerHTML=LHtml;
}
if(Item=="c")
{
LHtml+="<option>h</option>";
LHtml+="<option>i</option>";
LHtml+="<option>j</option>";
LHtml+="</select>";
this.layer(2).innerHTML=LHtml;
}
IsShow="T";
}
else
{
for(var i=0;i<this.layer.length;i++)
{
if(this.layer(i).innerHTML!="")
{
this.layer(i).innerHTML="";
}
}
IsShow="F";
}

}
</script>
<table border="0" style="border-collapse: collapse" width="100%" id="table1">
<tr>
<td width="14">
<a href=# onclick="ShowList('a');">a</a></td>
<td><div id="layer"></div></td></td>
</tr>
<tr>
<td width="14">
<a href=# onclick="ShowList('b');">b</a></td>
<td><div id="layer"></div></td></td>
</tr>
<tr>
<td width="14">
<a href=# onclick="ShowList('c');">c</a></td>
<td><div id="layer"></div></td></td>
</tr>
</table>
写完了以后的代码是这种效果?

[此贴子已经被作者于2006-3-29 13:32:52编辑过]

#12
aaaaa20042006-03-29 14:00

欧不是这样的效果,开始是这样的

a
b
c

点击a,b一级菜单后

a
e
f
g
b
h
k
c
然后点击a,b后二级菜单消失恢复成开始的状态
#13
yms1232006-03-29 14:33
回复:(aaaaa2004)欧不是这样的效果,开始是这样的 ...
以下是引用aaaaa2004在2006-3-29 14:00:00的发言:

欧不是这样的效果,开始是这样的

a
b
c

点击a,b一级菜单后

a
e
f
g
b
h
k
c
然后点击a,b后二级菜单消失恢复成开始的状态

也就是说
初始状态
a
b
c
点击a后
a
e
f
g
b
c
再点击a后
a
b
c
回到初始状态
还是
点击a后
a
e
f
g

b
c
再点击b后
a
e
f
g

b
h
k
c
再点击a
a
b
h
k
c
(efg消失)再点击b
a
b
c
(hk消失)

#14
aaaaa20042006-03-29 14:39
应该是这样的
点击a后
a
e
f
g

b
c
再点击b后
a
e
f
g

b
h
k
c
再点击a
a
b
h
k
c
(efg消失)再点击b
a
b
c
(hk消失)
#15
yms1232006-03-29 14:56
回复:(aaaaa2004)如何实现该二级菜单的功能呢
<script language=javascript>
function ShowLayer(index)
{
if(this.Layer(index).style.display=="none")
{
this.Layer(index).style.display="block";
}
else
{
this.Layer(index).style.display="none";
}
}
</script>
<a href=# onclick=ShowLayer(0); >a</a><br>
<div style=display:none; id=Layer>
d<br>
e<br>
f<br>
</div>
<a href=# onclick=ShowLayer(1); >b</a><br>
<div style=display:none; id=Layer>
g<br>
h<br>
i<br>
</div>
<a href=# onclick=ShowLayer(2); >c</a><br>
<div style=display:none; id=Layer>
j<br>
k<br>
l<br>
</div>
这个样子是吗?
#16
google2006-03-29 14:56

二 级菜单连动吗?

#17
aaaaa20042006-03-29 15:05
谢谢yms123是这种效果真的非常感谢
#18
aaaaa20042006-03-29 15:27
yms123不好意思还有些问题如果我的菜单要以表格形式表现出来呢?应该如何写呢?就是要做成这个样子
a
e
f
g
b
h
k
c
#19
yms1232006-03-29 15:40
回复:(aaaaa2004)如何实现该二级菜单的功能呢
<script language=javascript>
function ShowLayer(index)
{
if(this.Layer(index).style.display=="none")
{
this.Layer(index).style.display="block";
}
else
{
this.Layer(index).style.display="none";
}
}
</script>
<table border="1" style="border-collapse: collapse" width="6%" id="table1">
<tr>
<td><a href=# onclick=ShowLayer(0); >a</a></td>
</tr>
<tr>
<td><div style=display:none; id=Layer>
d<br>
e<br>
f<br>
</div>
</td>
</tr>
<tr>
<td><a href=# onclick=ShowLayer(1); >b</a></td>
</tr>
<tr>
<td>
<div style=display:none; id=Layer>
g<br>
h<br>
i<br>
</div>
</td>
</tr>
<tr>
<td><a href=# onclick=ShowLayer(2); >c</a></td>
</tr>
<tr>
<td>
<div style=display:none; id=Layer>
j<br>
k<br>
l<br>
</div>
</td>
</tr>
</table>
把层放到表格里不就解决了吗?
#20
aaaaa20042006-03-29 16:18
谢谢yms123
#21
princes2006-05-24 15:34
请教yms123:
怎么样将你的代码与数据库结合来做动态的二级菜单?也就是一级菜单a,b,c都是从数据库中取得,那么下面的第二级也是根据附属的第一级菜单来取得的,我用的上面的代码修改但是怎么不行,请指教,谢谢!
#22
jhy2006-05-24 15:57
yms123:
你这都是用表格写死的,要是要从数据库中读取数据来实现无限级菜单呢。也要aaaaa2004 给的效果。

其显示类似与无限级树菜单的效果。
#23
yms1232006-05-24 22:01
回复:(jhy)yms123:你这都是用表格写死的,要是要从...
以下是引用jhy在2006-5-24 15:57:00的发言:
yms123:
你这都是用表格写死的,要是要从数据库中读取数据来实现无限级菜单呢。也要aaaaa2004 给的效果。

其显示类似与无限级树菜单的效果。

表格不是不灵活的,表格里面可以嵌套表格呀?从数据库里先读一级菜单,再读二级菜单以此类推读取。

#24
yms1232006-05-24 22:14
[CODE]<script language=javascript>
function ShowLayer(index)
{
if(this.Layer(index).style.display=="none")
{
this.Layer(index).style.display="block";
}
else
{
this.Layer(index).style.display="none";
}
}
</script>
<table border="1" style="border-collapse: collapse" width="6%" id="table1">
<%
Dim rsA'主菜单记录集
Dim rsB'子菜单记录集
Dim i
'……rsA,rsB为ADODB.RecordSet对象省略打开过程
Do Until rsA.EOF
With Response
.Write "<tr>"
.Write " <td><a href=# onclick=ShowLayer(0); >"&rsA("M_Muen)&"</a></td>"
.Write "</tr>"
rsB.Open "select * From MenuList Where C_MenuID="&rsA("M_MenuID"),con,1,3
.Write" <td>"
.Write" <div style=display:none; id=Layer>"
IF Not rsB.EOF Then
Do Until rsB.EOF
.Write rsB("C_Menu")&"<br>"
rsB.MoveNext
Loop
End IF
.Write " </div>"
.Write " </td>"
.Write "</tr>"
End With
rsA.MoveNext
Loop
%>
</table>[/CODE]
#25
jhy2006-05-25 09:32
yms123你看看这个贴
https://www.bc-cn.net/bbs/dispbbs.asp?boardid=10&id=66809&star=1#151019
这个前台该怎么实现呢?
#26
princes2006-05-25 12:37

请教yms123:
yms123你好!非常感谢你的答复,但是我为了好看一些,进行了修改,但是修改后拿取出来的子菜单却只能显示第一条,其他的不能显示,本来用response来看是有三条的。请帮忙,谢谢!代码如下:

<%
dim cn,rs,tablenum,strMenuID,I,J,strSonMenu
set cn = Server.CreateObject("Adodb.Connection")
cn.open "Provider=SQLOLEDB.1;Password=;Persist Security Info=True;User ID=sa;Initial Catalog=lctdata;Data Source=localhost"
Set rs = Server.CreateObject("Adodb.Recordset")
Set rs1 = Server.CreateObject("Adodb.Recordset")
'rs.open "select A.*,B.* from Menu_Role A,Menu_Info B where Role_User='" & strLoginName & "'",cn,1,3
rs.open "select A.*,B.* from Menu_Role A,Menu_Info B where A.Role_ID=B.Menu_ID and Parent_id=0 and A.Role_User='" & strLoginName & "'",cn,1,1

%>
<html>
<head>
<title>无标题文档</title>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<script language=javascript>
function ShowLayer(index)
{
if(this.Layer(index).style.display=="none")
{
this.Layer(index).style.display="block";
}
else
{
this.Layer(index).style.display="none";
}
}
</script>
</head>

<body bgcolor="#FFFFFF" text="#000000">
<form name="form1" method="post" action="">

<table width="41%" border="0" height="116" id="table1">
<%
if not rs.eof then
rs.movefirst
for I=1 to rs.recordcount
strSonMenu = rs("menu_id")

%>
<tr>
<td><a href=# onclick=ShowLayer(0);><%=rs("menu_name")%>菜单一</a></td>
</tr>
<%
response.write strSonMenu
if rs1.state=1 then rs1.close
rs1.Open "select * From menu_info Where Parent_id='" & strSonMenu & "'",cn,1,1
IF Not rs1.EOF Then
for j=1 to rs1.recordcount
%>
<tr>
<td>
<div style=display:none; id=Layer><img src="child.gif"><%=rs1("menu_name")%></div>
</td>
</tr>
<% rs1.MoveNext
next
End IF
rs.MoveNext
next
end if%>
</table>

</form>
</body>
</html>

#27
icecool2006-05-25 13:15

如果你数据库里分条列的,

这里当然要用循环才能都显示的啊

#28
princes2006-05-25 13:36
我这里是用的循环啊,但是不清楚为什么只显示第一条

[此贴子已经被作者于2006-5-25 13:44:39编辑过]


#29
xinxue2008-03-02 13:13
这个东西很有用的.
#30
冷月孤风2008-03-02 20:26
他说的就是树状菜单
#31
ncnongmin2008-04-10 21:05
看的眼睛都疼了。。。
1