我想了,写了省市动态联动变化的一个例子(两个下拉列框),大家看看有什么不足的地方。(其实这个应用还是很多的,比如说在先了对应的科室之后,动态从数库中读出此科室对应的人员名单,这一点是很实用的。)
文件为:
province.asp
city.mdb
city.mdb的结构为:
province表:
province(省份)
provinceid(省份代号)
city表:
city(城市)
cityid(城市代号)
provinceid(对应省份代号)
如:湖北,1; || 武汉,1001,1。
有下载地址:http://www.great-tax.com/province.rar
1<html>
2<head>
3<title>省市联动变化级选菜单</title>
4<style css="text/type">
5<!--
6
7body {font-size:9pt}
8\-->
9</style>
10</head>
set conn=server.createobject("adodb.connection")
conn.open "driver={microsoft access driver (*.mdb)}; dbq="& server.mappath("city.mdb")
set rs=server.createobject("adodb.recordset")
strsql="select * from province"
rs.open strsql,conn,1,1
' response.end
dim province(5,1)
count1=rs.recordcount
i1=0
if not rs.eof then
do while not rs.eof
province(i1,0)=rs("provinceid")
province(i1,1)=rs("province")
i1=i1+1
rs.movenext
loop
end if
rs.close
set rs=nothing
set rn=server.createobject("adodb.recordset")
strsql="select * from city "
rn.open strsql,conn,1,1
dim city(10,2)
count2=rn.recordcount
i2=0
if not rn.eof then
do while not rn.eof
city(i2,0)=rn("cityid")
city(i2,1)=rn("city")
city(i2,2)=rn("provinceid")
i2=i2+1
rn.movenext
loop
end if
' response.end
rn.close
set rn=nothing
1
2<script language="javascript">
3function InitBigClass()
4{
5province = new Array();
6
7
for i=0 to count1-1
1province[```
2=i
3```]=new Array();
4province[```
5=i
6```][0]="```
7=province(i,0)
8```"
9province[```
10=i
11```][1]="```
12=province(i,1)
13```"
next
1}
2function InitsmallClass()
3{
4city = new Array();
for i=0 to count2-1
1city[```
2=i
3```]=new Array();
4city[```
5=i
6```][0]="```
7=city(i,0)
8```"
9city[```
10=i
11```][1]="```
12=city(i,1)
13```"
14city[```
15=i
16```][2]="```
17=city(i,2)
18```"
next
1}
2
3InitBigClass()
4InitsmallClass()
5
6function changeprovince(myfrm)
7{
8
9var selectedprovinceid,i,j;
10for(i=myfrm.cityid.options.length-1;i>=0;--i)
11{
12myfrm.cityid.options[i]=null; //清空改变之前的省所对应的城市
13}
14selectedprovinceid=myfrm.provinceid.options[myfrm.provinceid.selectedIndex].value; //获取改变后的省份对应选项值
15j=0;
16for(i=0;i<city.length;i++)
17{
18if(selectedprovinceid==city[i][2])
19{
20
21myfrm.cityid.options[j]=new Option(city[i][1],city[i][1]);
22++j;
23}
24}
25}
26function addcity(myfrm)
27{
28var selectedprovinceid,i,j;
29selectedprovinceid=myfrm.provinceid.options[myfrm.provinceid.selectedIndex].value;
30j=0;
31for(i=0;i<city.length;i++)
32{
33if(selectedprovinceid==city[i][2])
34{
35myfrm.cityid.options[j]=new Option(city[i][1],city[0][1]);
36++j;
37}
38}
39}
40
41
42</script>
43<body>
44<form method=" POST" name="myform">
set rs=server.createobject("adodb.recordset")
strsql="select * from province"
rs.open strsql,conn,1,1
1<p>选择省:<select id="provinceid" name="provinceid" onchange="javascript:changeprovince(document.myform);" size="1">
if not rs.eof then
1<option ```"="" provinceid")="" selected="" value="```
2=rs(">```
3=rs("province")
4```</option> //设默认值为湖北
do while not rs.eof
1<option =rs("provinceid")="" ```="" value="```">```
2=rs("province")
3```</option>
rs.movenext
loop
end if
1
2</select> </p>
3<p>选择市:<select id="cityid" name="cityid" size="1">
4</select> </p>
5<p> <input name="B1" type="submit" value="提交"/></p>
6<p> </p>
conn.close
set conn=nothing
1
2</form>
3</body>
4</html>
有下载地址:http://www.great-tax.com/province.rar
---------------------------------------------------------------
呵呵,不错,不过抄csdn也不用抄的那么象嘛。连InitBigClass()、InitsmallClass()这样的函数名都一字不拉的抄过来了。定义数组也不一定要象csdn那么麻烦的。
---------------------------------------------------------------
既然结果集已经转数组了为什么后面生成select的时候还要再select * from province一回呢?
---------------------------------------------------------------
http://expert.csdn.net/Expert/topic/723/723099.xml?temp=.7060816
第一个方法就是为数据库设计的
---------------------------------------------------------------
能这么将asp内嵌到javascript中么?jsp能不能内嵌到javascript中?
---------------------------------------------------------------
呵呵,我什么时候也成高手啦?
asp、jsp都不能在客户端被javascript调用,不过他们都可以用来生成HTML页面的任何部分,包括javascript代码啊。
上面嵌入的代码:
-------------------------------------------
function InitBigClass()
{
province = new Array();
1 for i=0 to count1-1
province[``` =i
1province[```
2=i
3```][0]="```
4=province(i,0)
5```"
6province[```
7=i
8```][1]="```
9=province(i,1)
10```"
next
1}
2\-------------------------------------------
3就是用来循环生成
4\---------------------------------------------
5function InitBigClass()
6{
7province = new Array();
8province[1]=new Array();
9province[1][0]="```
10=province(i,0)
11```"
12province[1][1]="```
13=province(i,1)
14```"
15
16province[2]=new Array();
17province[2][0]="```
18=province(i,0)
19```"
20province[2][1]="```
21=province(i,1)
22```"
23.
24.
25.
26}
27\---------------------------------------------
28\---------------------------------------------------------------
29
30做WEB的最好把ASP和HTML分开,最好在ASP里不要见到rs等等的东西,否则会痛苦不堪。