听起来像级联啊!~
如下:
<html>
<head>
<script language=javascript>
var arr="浙江|江苏|安徽|江西";var arr0 = "杭州|宁波|温州|绍兴"; //这些数据可以从数据库中取得
var arr1 = "南京|苏州|无锡|常州";
var arr2 = "合肥|翕县|黄山|祁门";
var arr3 = "南昌|九江|赣州|上饶"; var arr00 = "杭州A区|杭州B区"; 
var arr01 = "宁波A区|宁波B区"; 
var arr02 = "温州A区|温州B区"; 
var arr03 = "绍兴A区|绍兴B区"; var arr10 = "南京A区|南京B区"; 
var arr11 = "苏州A区|苏州B区"; 
var arr12 = "无锡A区|无锡B区"; 
var arr13 = "常州A区|常州B区"; var arr20 = "合肥A区|合肥B区"; 
var arr21 = "翕县A区|翕县B区"; 
var arr22 = "黄山A区|黄山B区"; 
var arr23 = "祁门A区|祁门B区"; var arr30 = "南昌A区|南昌B区"; 
var arr31 = "九江A区|九江B区"; 
var arr32 = "赣州A区|赣州B区"; 
var arr33 = "上饶A区|上饶B区"; //alert(eval("arr"+2+1));
function AddOptions(dltObj,arrObj)
{
dltObj.innerHTML="";
var arrLocation=arrObj.split("|");
for(var i=0;i<arrLocation.length;i++){
var opt=document.createElement("OPTION");
dltObj.add(opt);
opt.value=i;
opt.text=arrLocation[i];
}
}
function init(){
AddOptions(dltProvince,eval('arr'));
AddOptions(dltCity,eval('arr'+dltProvince.selectedIndex));
AddOptions(dltArea,eval('arr'+dltProvince.selectedIndex+dltCity.selectedIndex));
}
</script>
</head>
<body onLoad="init();">
<table width="300" cellpading="0" cellspacing="0" border="0">
<tr>
<td width="100"><select id="dltProvince" onchange="AddOptions(dltCity,eval('arr'+dltProvince.selectedIndex));AddOptions(dltArea,eval('arr'+dltProvince.selectedIndex+dltCity.selectedIndex));" style="width:100%"></select>
</td>
<td width="100"><select id="dltCity" onchange="AddOptions(dltArea,eval('arr'+dltProvince.selectedIndex+dltCity.selectedIndex));" style="width:100%"></select>
</td>
<td width="100"><select id="dltArea" style="width:100%"></select>
</td>
</tr>
</table>
</body>
</html>

解决方案 »

  1.   

    你先读好放再数组里,我见过、做过的大部分联动都是这么做的
    要不想这么做也可以用xmlhttp或者隐藏iframe来做,呵呵,具体办法自己搜搜,csdn应该有很多吧
      

  2.   

    那要看你需要联动的数据量有多大了,如果不是很大的话,可以考虑一次性下载,那么前台执行速度很快,方法很多,比如:<input type="hidden" id="hidArr0Value" value='<c:out value=..../>'>
    然后调用函数的时候把这个的值传过去。
    如果数据量很大,那就要用到xmlhttp或用隐藏的frame来提交数据,动态查询并返回需要的数据。
      

  3.   

    to  zhaoxiaoyang(梅雪香@hisoft) function init(){
    AddOptions(dltProvince,eval('arr'));
    AddOptions(dltCity,eval('arr'+dltProvince.selectedIndex));
    AddOptions(dltArea,eval('arr'+dltProvince.selectedIndex+dltCity.selectedIndex));
    }
    请问eval('???')是干森么用的?
      

  4.   

    http://www.tn99.com/myblog/blogview.asp?logID=149&cateID=2
    上面的联动程序中有
      

  5.   

    to Romeo1982(只爱CS) :
    eval()函数是把参数当作一条语句来运行的本例中,就是返回arr*     不知道解释的对不对。
      

  6.   

    就是联动嘛
    客户端可以用xmlhttp做无刷新