<%@ Language=VBScript codepage=936 %>
<%  Option Explicit %>
<!-- 数据库结构 两个字段 provinceName(省名)  cityName(城市名) -->
<!-- #include file="connection.asp" -->
<script language=javascript>
<%
dim RS
    Set RS = Server.CreateObject("ADODB.Recordset")
    RS.open "SELECT * FROM tableName ORDER BY provinceName DESC", Conn, 0, 1dim provinceName '省名
dim provinceList '记录所有的省名, 最后输出到JS里组成省名数组
dim cityList     '记录某个省的所有城市名, 最后输出到JS里组成城市名数组
dim cityIndex    'JS的city数组名与省名下拉框的索引对应
    cityIndex = 1    do while not RS.eof
        if  isEmpty(provinceName) then
            cityList = cityList & chr(34) & Trim(RS("cityName")) & chr(34) &","
            provinceName = Trim(RS("provinceName"))
        else
            if  provinceName<>Trim(RS("provinceName")) then
                provinceList = provinceList & chr(34) & provinceName & chr(34) &","
                if not isEmpty(cityList) then Response.write "var city"& cityIndex &_
                " = ["& Left(cityList, Len(cityList)-1) &"];"& VBCrLf
                '输出每个省所对应的城市名的列表并组成JS的数组, 数组形式参考下面的实例
                cityIndex = cityIndex + 1
                cityList = ""
            end if
            provinceName = Trim(RS("provinceName"))
            cityList = cityList & chr(34) & Trim(RS("cityName")) & chr(34) &","
            '将每个省里的所有城市名组成一串字串
        end if
        RS.movenext
    loop    if not isEmpty(cityList) then
        Response.write "var city"& cityIndex &" = ["& Left(cityList, Len(cityList)-1) &"];"& VBCrLf
    end if
    if not isEmpty(provinceName) then
        provinceList = provinceList & chr(34) & provinceName & chr(34) &","
        Response.write "var provinceName = ["& Left(provinceList, Len(provinceList)-1) &"];"
        '输出省名字串并组成省名的JS数组, 形式见下实例
    end if    RS.close    : Set RS=nothing
    Conn.close  : Set Conn=nothing
%>
</script><form name=form1>
<select name=province onchange="cityName(this.selectedIndex)">
  <option value="">请选择省名</option>
</select><select name=city>
  <option value="">请选择城名</option>
</select>
</form><script language=javascript>/* 若要直接看下拉框联动效果的话, 将这段被注释的代码起用, 且上面的那段ASP注释即可
var provinceName = ["浙江", "江苏", "安徽", "江西"];
var city1 = ["杭州", "宁波", "温州", "绍兴", "金华", "湖州"];
var city2 = ["南京", "苏州", "无锡", "常州", "镇江", "徐州"];
var city3 = ["合肥", "翕县", "黄山", "祁门", "休宁"];
var city4 = ["南昌", "九江", "赣州", "上饶", "新余", "景德镇"]; 
//你在ASP输出的页面里应该看到如上这般的JS数组, 能看到则表示成功
*/
function province()
{    var e = document.form1.province;
    for (var i=0; i<provinceName.length; i++)
       e.options.add(new Option(provinceName[i], provinceName[i]));
}
function cityName(n)
{
    var e = document.form1.city;
    e.options.length = 1;
    if (n == 0) return;
    var a = eval("city"+ n); //得到城市的数组名
    for (var i=0; i<a.length; i++) e.options.add(new Option(a[i], a[i]));
}
window.attachEvent("onload", province);  //初始时给省名下拉框赋内容
</script>

解决方案 »

  1.   

    <script language = "JavaScript">
    var onecount;
    onecount=0;
    subcat = new Array();
    <%
    count = 0
    do while not Trs.eof
    %>
    subcat[<%=count%>] = new Array("<%=Trs("chengshi")%>","<%=Trs("shengfen")%>","<%=Trs("chengshi")%>");
    <%
    count = count + 1
    Trs.movenext
    loop
    Trs.close
    set Trs=nothing
    %>
    onecount=<%=count%>;function changelocation(locationid)
    {
    document.form1.chengshi.length = 0;var locationid=locationid;
    var i;
    for (i=0;i < onecount; i++)
    {
    if (subcat[i][1] == locationid)
    {
    document.form1.chengshi.options[document.form1.chengshi.length] = new Option(subcat[i][0], subcat[i][2]);
    }
    }}
    </script>
    <%
    set rs=server.CreateObject("adodb.recordset")
    rs.source="select 省份 from TABLE1"
    rs.open rs.source,conn,1,1
    set Trs=server.CreateObject("adodb.recordset")
    sql="select 城市 from TABLE2"
    Trs.open sql,conn,1,1
    %>
    <select name="shengfen" class="input" onchange="changelocation(document.form1.shengfen.options[document.form1.shengfen.selectedIndex].value)">
    <option value="" selected>选择省份</option>
    <% do while not rs.eof %>
    <option value="<%=rs("省份")%>"><%=rs("省份")%></option>
    <%
    rs.movenext
    loop
    %>
    </select>
    <select name="money" class="input">
    <option value="" selected>选择城市</option>
    </select>
      

  2.   

    <script language="javascript" src="selectcity.js"></script>
    <table>
    <tr>
    <td height="2" width="176" align="right">所在省份:&nbsp; </td>
    <td height="2" width="300">
    <select name="prov" size="1" onchange="javascript:selectcity()" style="color: rgb(0,0,255); border-left: medium none; border-right: medium none; border-top: medium none; border-bottom: thin inset">
    <option value="-1">未选</option>
    </select> </td>
    </tr>
    <tr>
    <td height="1" width="176" align="right">所在城市:&nbsp; </td>
    <td height="1" width="300"><font color="#FF0000">
    <select name="city" size="1" style="color: rgb(0,0,255); border-left: medium none; border-right: medium none; border-top: medium none; border-bottom: thin inset">
    <option value="-1">请先选择省份</option>
    </select>
    <script language="javascript">                     
     ProvinceOptionMenu();                     
    </script>
    * </font></td>
    </tr>
    </table>
      

  3.   

    http://fason.nease.net/samples/area/area.htmhttp://fason.nease.net/download/area.rar