JS和jQuery分別實現二級聯動下拉選擇

方式一:通過js實現二級聯動下拉框

<!DOCTYPE HTML>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>二級聯動下拉框</title>


<script>
	var data = {
		"北京市": ["海淀區","朝陽區","豐臺區"],
		"河北省": ["石家莊","唐山","秦皇島"],
		"遼寧省": ["瀋陽","大連","鞍山"],
		"山東省": ["青島","濟南","煙臺"]
	}
	
	/* --通過js實現二級聯動下拉框-- */
	//當選項切換時, 觸發onchange事件, 執行getCountry函數, 在函數中獲取當前選中的國家並彈出!
	function getCountry(thisobj){
		alert(thisobj.value);
	}
	
	//二級聯動下拉框
	function selectCity(thisobj){
		//1.獲取用戶選中的省份
		var prov = thisobj.value;//thisobj-->省份的select
		//2.根據省份獲取省份對應的城市列表
		var citys = data[prov];

		//3.將省份對應的所有城市作爲option選項依次填充到城市select中
		//>>獲取城市select
		var oCitySele = document.getElementById("city");

        //在填充城市列表數據之前, 先清空之前的數據
		//清理內容方式一
		//oCitySele.innerHTML = "<option>--選擇城市--</option>";

		var opts = oCitySele.getElementsByTagName("option");
		//清理內容方式二
		//>>循環遍歷option, (刪除第一個以外的所有option)
		//0 號位爲選中提示,所以從1號位開始刪除,每次刪除後數組都會向前移動,所以
		//遍歷刪除所有的一號位置就行
		var len = opts.length;//4 3
		for(var i=1; i<len;i++){
			//alert(opts[1].value);
			oCitySele.removeChild(opts[1]);
		}

		for(var i=0; i<citys.length; i++){
			var opt = document.createElement("option");
			opt.innerHTML = citys[i];
			oCitySele.appendChild(opt);
		}
	}
	
</script>
<!-- 
js實現注意問題: 
	ie10以下的瀏覽器不支持 select,table上的innerHTML屬性
	刪除option時,由於刪除後,options長度發生了變化,所以直接用for循環會有漏刪的情況,可以由後向前刪除,可以避免這樣的問題
-->
</head>

<body>
	
	<select name="country" onchange="getCountry(this)"  >
		<option value="none">--選擇國家--</option>
		<option value="中國">中國</option>
		<option value="美國">美國</option>
		<option value="日本">日本</option>
	</select>
	<br><br>
	<hr/>
	<br>
	<div id="seleDiv">
		<select id="province" onchange="selectCity(this)">
			<option>--選擇省市--</option>
			<option>北京市</option>
			<option>河北省</option>
			<option>遼寧省</option>
			<option>山東省</option>
		</select>
		<select id="city">
			<option>--選擇城市--</option>
		</select>
	</div>
</body>

</html>

方式二:通過jQuery實現二級聯動下拉框

<!DOCTYPE HTML>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>二級聯動下拉框</title>

<!--引入jquery庫-->
<script src="js/jquery-1.4.2.js"></script>
<script>
	var data = {
		"北京市": ["海淀區","朝陽區","豐臺區"],
		"河北省": ["石家莊","唐山","秦皇島"],
		"遼寧省": ["瀋陽","大連","鞍山"],
		"山東省": ["青島","濟南","煙臺"]
	}

	//當選項切換時, 觸發onchange事件, 執行getCountry函數, 在函數中獲取當前選中的國家並彈出!
	function getCountry(thisobj){
		alert(thisobj.value);
	}
	 //通過jQuery實現二級聯動下拉框
	function selectCity(thisobj){
		var prov = $(thisobj).val();//獲取用戶選中的省份
		var citys = data[prov];//再根據省份獲取對應的市區
		$("#city").html("<option>--選擇城市--</option>");//清空之前的數據
		for(var i=0; i<citys.length; i++){
			$("#city").append("<option>"+[citys[i]]+"</option>");
		}
	}
	
</script>
<!-- 
js實現注意問題: 
	ie10以下的瀏覽器不支持 select,table上的innerHTML屬性
	刪除option時,由於刪除後,options長度發生了變化,所以直接用for循環會有漏刪的情況,可以由後向前刪除,可以避免這樣的問題
-->
</head>

<body>
	
	<select name="country" onchange="getCountry(this)"  >
		<option value="none">--選擇國家--</option>
		<option value="中國">中國</option>
		<option value="美國">美國</option>
		<option value="日本">日本</option>
	</select>
	<br><br>
	<hr/>
	<br>
	<div id="seleDiv">
		<select id="province" onchange="selectCity(this)">
			<option>--選擇省市--</option>
			<option>北京市</option>
			<option>河北省</option>
			<option>遼寧省</option>
			<option>山東省</option>
		</select>
		<select id="city">
			<option>--選擇城市--</option>
		</select>
	</div>
</body>

</html>

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章