动态数据联动:JavaScript数组在省市级联中的高级应用

JavaScript中的数组

例:JS中的数组可以存放任意类型的数据,可以使用new Array()或[ ]  创建数组

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
	</head>
	<body>
		<script>
			var arr1 = new Array();
			var arr2 = new Array(3);
			var arr3 = new Array("aaa", "nbbb", "ccc", 11);
			var arr4 = ["a", "b", "c"];
		</script>
	</body>
</html>

 数组的常用属性和方法

名称描述
join( )将数组转化为使用指定符号连接的字符串
concat( )将多个数组合并为一个
reverse( )将数组中的元素排序进行反转
sort( )对数组进行排序

 例:

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
	</head>
	<body>
		<script>
			var arr1 = [1, 2, 3, "李四", "张三"];
			var arr2 = ["aaa", "bbb", "ccc", "ddd"];
            //先将两个数组合并,然后将合并之后的数组今反转,再根据反转之后的数组进行排序(默认升序)    
			document.write(arr1.concat(arr2).reverse().sort());		
		
		</script>
	</body>
</html>

 数组的应用-省市级联

补充知识:display属性

  • 通过对象的display属性设置显示样式
  • object.style.display = state;
描述
none不显示内容块且不保留内容块所占据的空间
inline设置元素同行显示,不允许设置元素的大小
block块状显示且独占一行,可以设置元素的大小
inline-block块状显示,并非独占一行,可以设置元素的大小

例:

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
	</head>
	<body>
		<input type="text" id="username" placeholder="请输入用户名" />
		<!-- display表示显示方式:
				1. none   隐藏
			    2. display 显示(块状)
				3. inline  显示(行级)
				4. inline-block 以行级显示,但本质上是个"块" -->		
		<div id="mydiv" style="display: inline-block; border: 1px solid red;color: blue;">
			用户名不能为空
		</div>

	</body>
</html>

下拉列表框的常用属性、方法和事件

属性:

描述
value下拉列表框中已选择的选项的值
text设置或返回某个选项的纯文本值
options存放下拉列表框中所有选项的数组
selectedIndex返回已选择的选项在options中的索引
length

返回下拉菜单中选项的个数

方法:

add(new,old)将option的新对象new添加至对象old之前,old参数不存在时,新对象将直接被添加到options数组的末尾

 事件:

onChange当选项发生改变时产生

 

省市级联实现案例的四种方式

例1

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
	</head>
	<body>
		请选择你的城市:
		<!-- onChange在切换列表选项时触发 -->
		<select id="province" onchange="cascade1()">
			<option value="">--请选择省份--</option>
			<option value="河南">河南</option>
			<option value="河北">河北</option>
		</select>
		省
		<select id="city">
			<option value="">--请选择城市--</option>
		</select>
		<script>
			//封装一个函数,返回值是一个指定id值的element元素对象,简化书写
			function $(obj){
				return document.getElementById(obj);
			}
			function cascade1() {
				//定义下拉列表的动态数组,现在的案例都是写死数据,如果学习了后端,可以从后端拿到数据,变成正在意义上的动态数组
				var hn = ["郑州", "洛阳", "开封"];
				var hb = ["石家庄", "保定", "邯郸"];

				//获取选择的省份
				var province = $("province").value;
				//每次选择,清空之前的数据(防止添加数据)
				$("city").options.length = 0;
				
				//定义两个if分支进行条件判断
				if (province == "河南") {
					for (var i = 0; i < hn.length; i++) {
						var opt = document.createElement("option");
						// opt.innerHTML = hn[i];
						//没有出现标签,使用innerText或innerHTML都可以
						//将数据添加到option中的文本区域
						opt.innerText=hn[i];
						//将数据添加到option中的value属性值
						opt.setAttribute("value", hn[i]);
						//将创建的option元素对象添加到id为city的下拉列表中
						$("city").appendChild(opt);
					}
				}
				if (province == "河北") {
					for (var i = 0; i < hb.length; i++) {
						var opt = document.createElement("option");
						opt.innerHTML = hb[i];
						opt.setAttribute("value", hb[i]);
						$("city").appendChild(opt);
					}
				}
			}

		</script>

	</body>
</html>

例2

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
	</head>
	<body>
		请选择你的城市:
		<!-- onChange在切换列表选项时触发 -->
		<select id="province" onchange="cascade2()">
			<option value="">--请选择省份--</option>
			<option value="河南">河南</option>
			<option value="河北">河北</option>
		</select>
		省
		<select id="city">
			<option value="">--请选择城市--</option>
		</select>
		<script>
			//封装一个函数,返回值是一个指定id值的element元素对象,简化书写
			function $(obj){
				return document.getElementById(obj);
			}
			function cascade2() {
				var hn = ["郑州", "洛阳", "开封"];
				var hb = ["石家庄", "保定", "邯郸"];
			
				//获取选择的省份
				var province = $("province").value;
				//每次选择,清空之前的数据
				$("city").options.length = 0;
			
				if (province == "河南") {
					for (var i = 0; i < hn.length; i++) {
						var opt = document.createElement("option");
						//和例1相比,只是将设置文本数据和设置value属性值的方式更改了
						opt.value = hn[i];
						opt.text = hn[i];
					
						$("city").appendChild(opt);
					}
				}
				if (province == "河北") {
					for (var i = 0; i < hb.length; i++) {
						var opt = document.createElement("option");
						opt.value = hb[i];
						opt.text = hb[i];
						$("city").appendChild(opt);
					}
				}
			}
		</script>

	</body>
</html>

例3

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
	</head>
	<body>
		请选择你的城市:
		<!-- onChange在切换列表选项时触发 -->
		<select id="province" onchange="cascade3()">
			<option value="">--请选择省份--</option>
			<option value="河南">河南</option>
			<option value="河北">河北</option>
		</select>
		省
		<select id="city">
			<option value="">--请选择城市--</option>
		</select>
		<script>
			//封装一个函数,返回值是一个指定id值的element元素对象,简化书写
			function $(obj){
				return document.getElementById(obj);
			}
			function cascade3() {
				//下面三行实际上就是创建一个二维数组,存放数据
				var arr = new Array(2);
				arr["河南"] = ["郑州", "洛阳", "开封"];
				arr["河北"] = ["石家庄", "保定", "邯郸"];
			
				var province = $("province").value;
				$("city").options.length = 0;
			
				//使用for-in 结构遍历二维数组中的一维数组的数据,index指的是每个数组中取出的下标位置
				for (var index in arr[province]) 
					//创建一个option元素对象
					var opt = document.createElement("option");
					opt.value = arr[province][index];
					opt.text = arr[province][index];
					//将option元素对象添加到下拉列表中
					$("city").options.add(opt);
							}
						}
		</script>

	</body>
</html>

例4

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
	</head>
	<body>
		请选择你的城市:
		<!-- onChange在切换列表选项时触发 -->
		<select id="province" onchange="cascade4()">
			<option value="">--请选择省份--</option>
			<option value="河南">河南</option>
			<option value="河北">河北</option>
		</select>
		省
		<select id="city">
			<option value="">--请选择城市--</option>
		</select>
		<script>
			//封装一个函数,返回值是一个指定id值的element元素对象,简化书写
			function $(obj){
				return document.getElementById(obj);
			}
			function cascade4() {
				var arr = new Array(2);
				arr["河南"] = ["郑州", "洛阳", "开封"];
				arr["河北"] = ["石家庄", "保定", "邯郸"];
			
				var province = $("province").value;
				$("city").options.length = 0;
				for (var index in arr[province]) {
					//使用option的构造方法创建对象,Option()构造函数接受两个参数:文本(text)和值(value);
				var opt = new Option(arr[province][index], arr[province][index]);
				$("city").options.add(opt);
							}
						}
		</script>

	</body>
</html>

以上是基于JS的数组实现省市级联的下拉列表的应用,由于没有出现后端数据,此时都是将数据写死在数据中,并非真正的动态数据

  • 5
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值