ASP+JS三级联动下拉菜单[调用数据库数据]

本文详细介绍了如何实现三级联动菜单的功能,并通过代码示例展示了具体操作步骤。文章涉及数据库连接、数据结构设计及JavaScript编程实现,旨在帮助开发者理解和实践三级菜单的构建。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

网上三级菜单多是多但是代码都比较烦,我这个应该说还是比较直观的:
'肯定先要连接数据库了,不用说了 
'数据库结构 
'类别1表名称:a 字段:ID,Name 说明:ID为主键是类别1的ID值,Name为类别1的名称 
'类别2表名称:aa 字段:ID,aID,Name 说明:ID为主键是类别2的ID值,aID为所属类别1的ID值,Name为类别2的名称 

'类别3表名称:aaa 字段:ID,aID,aaID,Name 说明:ID为主键是类别3的ID值,aID为所属类别1的ID值,aaID为所属类别2的ID值

,Name为类别3的名称 

=====test1.asp 你可以测试下,接收到的都是类别的ID值==== 
<% 
response.write"1:"&Request.form("s1")&"<BR>" 
response.write"2:"&Request.form("s2")&"<BR>" 
response.write"3:"&Request.form("s3")&"<BR>" 

%> 

<!-- 三级联动菜单 开始 --> 
<script language="JavaScript"> 
<!-- 
<% 
'二级数据保存到数组 
Dim count2,rsClass2,sqlClass2 
set rsClass2=server.createobject("adodb.recordset") 
sqlClass2="select * from aa" 
rsClass2.open sqlClass2,conn,1,1 
%> 
var subval2 = new Array(); 
//数组结构:一级根值,二级根值,二级显示值 
<% 
count2 = 0 
do while not rsClass2.eof 
%> 
subval2[<%=count2%>] = new Array('<%=rsClass2("aID")%>','<%=rsClass2("ID")%>','<%=rsClass2("Name")%>') 
<% 
count2 = count2 + 1 
rsClass2.movenext 
loop 
rsClass2.close 
%> 
<% 
'三级数据保存到数组 
Dim count3,rsClass3,sqlClass3 
set rsClass3=server.createobject("adodb.recordset") 
sqlClass3="select * from aaa" 
rsClass3.open sqlClass3,conn,1,1 
%> 
var subval3 = new Array(); 
//数组结构:二级根值,三级根值,三级显示值 
<% 
count3 = 0 
do while not rsClass3.eof 
%> 
subval3[<%=count3%>] = new Array('<%=rsClass3("aaID")%>','<%=rsClass3("ID")%>','<%=rsClass3("Name")%>') 
<% 
count3 = count3 + 1 
rsClass3.movenext 
loop 
rsClass3.close 
%> 
function changeselect1(locationid) 

document.form1.s2.length = 0; 
document.form1.s2.options[0] = new Option('==请选择类别==',''); 
document.form1.s3.length = 0; 
document.form1.s3.options[0] = new Option('==请选择专题==',''); 
for (i=0; i<subval2.length; i++) 

if (subval2[i][0] == locationid) 
{document.form1.s2.options[document.form1.s2.length] = new Option(subval2[i][2],subval2[i][1]);} 


function changeselect2(locationid) 

document.form1.s3.length = 0; 
document.form1.s3.options[0] = new Option('==请选择专题==',''); 
for (i=0; i<subval3.length; i++) 

if (subval3[i][0] == locationid) 
{document.form1.s3.options[document.form1.s3.length] = new Option(subval3[i][2],subval3[i][1]);} 


//--> 
</script> 
<form name="form1" method="post" action="test1.asp"> 
三级联动: 
<% 
Dim count1,rsClass1,sqlClass1 
set rsClass1=server.createobject("adodb.recordset") 
sqlClass1="select * from a" 
rsClass1.open sqlClass1,conn,1,1 
%> 
<select name="s1" onChange="changeselect1(this.value)"> 
<option>==请选择频道==</option> 
<% 
count1 = 0 
do while not rsClass1.eof 
response.write"<option value="&rsClass1("ID")&">"&rsClass1("Name")&"</option>" 
count1 = count1 + 1 
rsClass1.movenext 
loop 
rsClass1.close 
%> 
</select> 
<select name="s2" onChange="changeselect2(this.value)"> 
<option>==请选择类别==</option> 
</select> 
<select name="s3"> 
<option>==请选择专题==</option> 
</select> 
<input type="submit" name="Submit" value="提交"></form> 
<!-- 三级联动菜单 结束 --> 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

csdn_aspnet

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值