这里是以省份和城市为例,由于用到数据库,请先建立数据库dlist.mdb
数据库名称:dlist.mdb
省份表名称:Province
字段有:p_id(类型:自动编号),p_name(类型:文本,省份名称)
城市表名称:City
字段有:c_id(类型:自动编号),c_pid(类型:文本,省份名称,等于Province表中的p_name),c_name(类型:文本,城市名称)
源程序如下,保存为ASP文件即可执行。
------------------------------------------------------------
<%
dim id
id=request.QueryString("id")
if id="1" then
response.Write "<br>" & request.Form("lstb")
response.Write "<br>" & request.Form("lsts")
end if
%>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>JS动态列表示例</title>
<script language="JavaScript">
<!--
var sSort = new Array();
var num = 0;
<%
dim conn,rs,grs,i,j,pstr
pstr=""
set conn=server.createobject("adodb.connection")
set rs=server.createobject("adodb.recordset")
set grs=server.createobject("adodb.recordset")
conn.open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.mappath("dlist.mdb")
'写省份JS数组
rs.open "select * from province;",conn,1,1
for i=0 to rs.recordcount-1
pstr=pstr & "<option value=""" & rs("p_name") & """>" & rs("p_name") & "</option>"
getsub(rs("p_name"))
rs.movenext
next
rs.close()
set rs=nothing
set grs=nothing
'根据省份写城市JS数组的过程
sub getsub(pname)
grs.open "select * from city where c_pid='" & pname & "';",conn,1,1
for j=1 to grs.recordcount
response.write "sSort[num++] = new Array(""" & grs("c_name") & """ ,""" & pname & """);" & vbCrlf
grs.movenext
next
grs.close()
end sub
%>
var nsSortCount = num;
function sdbSortChange(cmbsdbSort, cmbsSort)
{
var nSelsdbSort = cmbsdbSort.selectedIndex;
var ssdbSort = cmbsdbSort.options[nSelsdbSort].value;
cmbsSort.length = 0;
cmbsSort.options[0] = new Option('-请选择-', '');
for(var i=0; i<nsSortCount; i++)
{
if(sSort[i][1] == ssdbSort)
{
cmbsSort.options[cmbsSort.length] = new Option(sSort[i][0], sSort[i][0]);
}
}
}
function InitsSort(cmbsdbSort, cmbsSort)
{
var nSelsdbSort = cmbsdbSort.selectedIndex;
var ssdbSort = cmbsdbSort.options[nSelsdbSort].value;
var ssSort = cmbsSort.options[0].value;
cmbsSort.length = 0;
cmbsSort.options[0] = new Option('-请选择-', '');
var n = 0;
for(var i=0; insSortCount; i++)
{
if(sSort[i][1] == ssdbSort)
{
cmbsSort.options[cmbsSort.length] = new Option(sSort[i][0], sSort[i][0]);
if(sSort[i][0] == ssSort)
cmbsSort.options[cmbsSort.length-1].selected = true;
}
}
}
//-->
</script>
</head>
<body>
<p> </p>
<p> </p>
<p> </p>
<form action="index.asp?id=1" method="post" name="frmdlist" id="frmdlist">
<table width="408" border="0" align="center" cellpadding="2" cellspacing="2">
<tr>
<td width="400" align="center">JS动态列表示例</td>
</tr>
<tr>
<td align="center"><%response.write "<select name=""lstb"" style=""width:200"" onChange=""sdbSortChange(this,frmdlist.lsts);"">" & pstr & "</select>