利用对象的哈希特性制作的二级联动下拉列表框
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title> New Document </title>
</head>
<body>
<p>省:<select id="provinceCbo"></select></p>
<p>市:<select id="cityCbo"></select></p>
</body>
</html>
<script type="text/javascript">
<!--
function $(id){
return document.getElementById(id);
}
document.body.onload=function(){
//原始数据,这段文字无论是从后台取还是放在前台都比较容易维护
var dataString="北京:海淀,西城,崇文,丰台;辽宁:大连,沈阳,铁岭;湖南:长沙,株洲,湘潭,衡阳,岳阳";
var arr1=dataString.split(";");
// 从dataString给datum填值
var datum = {};// var datum=new Array();亦可
for(var i=0,n=arr1.length;i<n;i++){
var arr2=arr1[i].split(":");
var key=arr2[0];
var value=arr2[1].split(",");
datum[key]=value;
}
// datum的具体数据
//var datum = {
// '北京': ['海淀','西城','崇文','丰台'],
// '辽宁': ['大连','沈阳','铁岭'],
// '湖南': ['长沙','株洲','湘潭','衡阳','岳阳']
//};
// 省下拉列表框填值
var provinceCbo=$("provinceCbo");
for(var key in datum){
var newOption=new Option;
newOption.value=key;
newOption.text=key;
provinceCbo.add(newOption);
}
// 市下拉列表框填值
var cityCbo=$("cityCbo");
var arr=datum[provinceCbo.value];
for(var i=0,n=arr.length;i<n;i++){
var newOption=new Option;
newOption.value=arr[i];
newOption.text=arr[i];
cityCbo.add(newOption);
}
// 省发生变化时联动
provinceCbo.onchange=function(){
var province=this.value;
for(var i=cityCbo.options.length-1;i>=0;i--){
cityCbo.remove(i);
}
var arr=datum[province];
for(var i=0,n=arr.length;i<n;i++){
var newOption=new Option;
newOption.value=arr[i];
newOption.text=arr[i];
cityCbo.add(newOption);
}
};
}
//-->
</script>