本文转载自:http://info.codepub.com/2006/10/info-11484.html
'肯定先要连接数据库了,不用说了
'数据库结构
'类别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的名称
'数据库结构
'类别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的名称
<!--
三级联动菜单 开始
-->
< 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>
<!-- 三级联动菜单 结束 -->
===== 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>
<!-- 三级联动菜单 结束 -->
===== test1.asp 你可以测试下,接收到的都是类别的ID值 ====
<%
response.write " 1: " & Request.form( " s1 " ) & " <BR> "
response.write " 2: " & Request.form( " s2 " ) & " <BR> "
response.write " 3: " & Request.form( " s3 " ) & " <BR> "
%>
========================================