1. 程式人生 > >用JS實現下拉選單的聯動

用JS實現下拉選單的聯動

需求:用JS實現一個下拉選單,要求在選中“地區”選單中相應的地區時,自動在“國家”選單中 出現相應的國家。

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8" />
		<title>聯動選單</title>
	</head>
	<body>
		<p>地區:
			<select id="area" onchange="change();">
				<option value="">請選擇</option>
				<option value="1">亞洲</option>
				<option value="2">歐洲</option>
				<option value="3">非洲</option>
			</select>
		</p>
		<p>國家:
			<select id="country">
				<option>請選擇</option>
			</select>
		</p>
	</body>
	<script type="text/javascript" src="select.js" ></script>
</html>

select.js
//假設接收到伺服器傳來的引數
var data = [
	["中國","朝鮮","日本"],
	["挪威","冰島","葡萄牙"],
	["南非","辛巴威","烏干達"]
]

function change(){
	var area = document.getElementById("area");
	var countrys = document.getElementById("country");
	var index = area.value;					
	var selects = data[index-1];			//通過選中下拉的選單value值獲取資料
	
	var oldOptions = countrys.children;		//用children,陣列內不會有多餘屬性(換行符)
	var length = oldOptions.length;			//!!注意,提前記錄length原因:
											//如果在遍歷刪除過程中記錄length,則length值會改變,刪除會出錯。
	for(var i=0;i<length;i++){				//刪除原先選項的過程,若不刪除,選項會一直堆積。
		countrys.removeChild(oldOptions[0]);//一直第一個元素,因為清除第一個以後,後面的元素會前移。如果按正常的i遍歷,會出錯!
	}
	
	if(index==0) return;					//如果選中的是"請選擇",就不再新增資料,避免報錯(因為腳標是-1)
	
	for(var i=0;i<selects.length;i++){		//增加選項過程
		var option = document.createElement("option");
		option.innerHTML = selects[i];
		country.appendChild(option);
	}
}