疫情期间学习原生js的动态生成联动菜单

  哈哈还是js还是很有意思的

js动态生成联动菜单

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title>联动菜单</title>
		<script type="text/javascript">
			let datas =
			[ 
				{"pid":1,"pname":"北京","cities":[{"cid":1,"cname":"朝阳区"},{"cid":2,"cname":"大兴区"},{"cid":3,"cname":"海淀区"}]},
				{"pid":2,"pname":"广西","cities":[{"cid":1,"cname":"桂林"},{"cid":2,"cname":"南宁"},{"cid":3,"cname":"百色"}]},
				{"pid":3,"pname":"广东","cities":[{"cid":1,"cname":"佛山"},{"cid":2,"cname":"广州"},{"cid":3,"cname":"深圳"}]},
				{"pid":4,"pname":"江苏","cities":[{"cid":1,"cname":"南京"},{"cid":2,"cname":"连云港"},{"cid":3,"cname":"扬州"}]}
			]
			
			window.onload=function(){
				initProvince();
				initCity(1);
				//需要给sprovince下拉框注册一个事件;
				let province=document.querySelector('#sprovince');
				province.addEventListener('change',function(){
					//获取选择项索引
					let index=this.selectedIndex;
					//options集合
					let ops=this.options;
					let curroption=ops[index];
					let optIndex=curroption.value;
					initCity(optIndex);
				})
			}
			
			function initCity(pid){
				 //找到省对应下的cities;
				 let cities =null;
				 datas.forEach(function(province,index,array){
					if(province.pid == pid){
						cities =province.cities;
					}
				 })
				//把对应的城市放进城市选择框中
                let city=document.querySelector('#scity');
				//清空缓存,当然从新加
                city.options.length=0;
                for (var i = 0; i < cities.length; i++) {
                	let datarow = cities[i];
                	let opt=document.createElement('option');
                	opt.value = datarow.cid;
                	opt.text = datarow.cname;
                	city.append(opt);
                }				
				
				
				}
				
				
			function initProvince(){
				let province=document.querySelector('#sprovince');
				
				for (var i = 0; i < datas.length; i++) {
					let datarow = datas[i];
					let opt=document.createElement('option');
					opt.value = datarow.pid;
					opt.text = datarow.pname;
					province.append(opt);
				}
			}
		</script>
	</head>
	<body>
		<select id="sprovince">
			
			
		</select>
		<select id="scity">
			
		</select>
	</body>
</html>

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值