<!DOCTYPE>
<html>
<head>
<title>級聯下拉列表</title>
<meta charset="UTF-8">
</head>
<body onload="load()">
<div>
<select class='prov' id='prov' onchange='changeCity()'>
<option value=''>--請選擇省--</option>
</select>
<select class='city' id='city'>
<option value=''>--請選擇市--</option>
</select>
</div>
<script>
var province=document.getElementById("prov");
var city=document.getElementById("city");
var arr_prov=new Array(new Option("--請選擇省--",''),new Option("湖南","hn"),new Option("廣東","gd"));
var arr_city=new Array();
arr_city[0]=new Array(new Option("--請選擇市--",''));
arr_city[1]=new Array(new Option("長沙",'cs'),new Option("婁底",'ld'),new Option("永州",'yz'));
arr_city[2]=new Array(new Option("廣州",'gz'),new Option("深圳",'sz'));
//動態載入所有省份
function load(){
for(var i=0;i<arr_prov.length;i++){
province.options[i]=arr_prov[i];
}
}
//選中省份之后,根據索引動態載入相應城市
function changeCity(){
//清空上次的選項
city.options.length=0;
//獲取省一級的下拉列表選中的索引
var index=province.selectedIndex;
for(var i=0;i<arr_city[index].length;i++){
city.options[i]=arr_city[index][i];
}
}
</script>
</body>
</html>
要點:
1.省份信息可以在頁面加載時就導入
2.城市信息隨着省份選擇的改變而改變,故應放在省份的onchange函數內
3.本例核心:selectedIndex屬性,下拉列表所選中項的索引
4.一個bug處理:若不加上“city.options.length=0”,則在city列表中,上一省份對應城市的結果會影響下一省份的城市列表(不妨試一試);故要用這條代碼清空列表,消除影響。