原生js简单的省市联动

10 篇文章 0 订阅
<h2>省市级联下拉</h2>
		        <select id="provinces" οnchange="changeCity(this.value)">
			<option value="-1">--请选择--</option>
		</select>
		<select id="cities">
			<option value="-1">--请选择--</option>
		</select>
		<script>
			var provinces=['北京','天津','四川'];
			var cities=[
				['东城区','西城区'],
				['河东区','和平区'],
				['成都市','绵阳市']
			];
			var fragment=document.createDocumentFragment();  //创建一个文档片段对象,使用它可以减少dom渲染的次数,提高效率
			for (var i=0;i<provinces.length;i++) {
				var option=document.createElement('option'); //创建元素节点
				option.setAttribute('value',i);   //为创建的元素节点设置属性值
				option.innerHTML=provinces[i];
				fragment.appendChild(option);     //将创建的元素节点追加到fragment
			}
			document.getElementById('provinces').appendChild(fragment);
			function changeCity(optionValue){
				if(optionValue==-1){
					return;
				}
				//删除下拉框中已有的城市
				var citiesSelect=document.getElementById('cities');
				while(citiesSelect.children.length>1){
					citiesSelect.removeChild(citiesSelect.lastElementChild); //从最后一个元素删除,是因为从第一个元素删除可能出现问题
				}
				var cityArr=cities[optionValue];
				var fragment=document.createDocumentFragment();
				for (var i=0;i<cityArr.length;i++) {
					var option=document.createElement('option');
					option.setAttribute('value',i);
					option.innerHTML=cityArr[i];
					fragment.appendChild(option);
				}
				citiesSelect.appendChild(fragment);
			}
			
		</script>
		

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
原生JavaScript实现省市县三级联动的方法如下: 首先,需要准备好省市县的数据。可以通过JSON格式的数据来表示,比如: ```javascript var data = { "province": [ { "name": "省份1", "cities": [ { "name": "城市1", "counties": ["县1", "县2", "县3"] }, { "name": "城市2", "counties": ["县4", "县5", "县6"] } ] }, { "name": "省份2", "cities": [ { "name": "城市3", "counties": ["县7", "县8", "县9"] }, { "name": "城市4", "counties": ["县10", "县11", "县12"] } ] } ] }; ``` 然后,在HTML中添加三个select元素作为下拉框,分别表示省、市、县: ```html <select id="province"></select> <select id="city"></select> <select id="county"></select> ``` 接下来,通过JavaScript将省份数据加载到省份下拉框中: ```javascript var provinceSelect = document.getElementById("province"); for (var i = 0; i < data.province.length; i++) { var option = document.createElement("option"); option.text = data.province[i].name; provinceSelect.add(option); } ``` 通过监听省份下拉框的change事件,根据选中的省份,动态加载对应的城市数据到城市下拉框: ```javascript var citySelect = document.getElementById("city"); provinceSelect.addEventListener("change", function() { var cities = data.province[provinceSelect.selectedIndex].cities; citySelect.innerHTML = ""; // 清空城市下拉框 for (var i = 0; i < cities.length; i++) { var option = document.createElement("option"); option.text = cities[i].name; citySelect.add(option); } }); ``` 最后,再根据选中的城市,动态加载对应的县区数据到县区下拉框: ```javascript var countySelect = document.getElementById("county"); citySelect.addEventListener("change", function() { var counties = data.province[provinceSelect.selectedIndex].cities[citySelect.selectedIndex].counties; countySelect.innerHTML = ""; // 清空县区下拉框 for (var i = 0; i < counties.length; i++) { var option = document.createElement("option"); option.text = counties[i]; countySelect.add(option); } }); ``` 以上就是原生JavaScript实现省市县三级联动简单示例。当省份或城市改变时,会动态加载对应的数据到下拉框中,实现了三级联动的效果。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

LLL_LH

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值