JS实现,利用两个下拉菜单,选择省份与对应城市

效果图

在这里插入图片描述

HTML页面代码部分

<body>
		省份<select id="province" onchange="showCity()">
		    	<option>省份</option>
		    	<option>河南</option>
		        <option>山东</option>
		        <option>广东</option>
		    	</select>
		城市<select id="city">
				<option>城市</option>
			</select>
	</body>

JS代码部分

<script>
		function showCity (){
			
            /*
            	定义二维数组,存放城市
            */
			//城市数组要与option标签中的省份相对应,因为第一个选项就是“省份”描述,所以第一个数组用空数组即可
			var citys = [[],["郑州","南阳","安阳"],["蓝翔","青岛","崂山"],["深圳","广州","中山"]];
			
            
            /*
            	根据选择的省份,得到这个省份中的城市数组
            */
			//获取用户选择的省份
			var provinceNode = document.getElementById("province");
			//获取选择的省份的索引
			var index = provinceNode.selectedIndex;
			//根据省份的索引从二维数组中获取到显示的城市数据,showCity是一个一维数组
			var showCity = citys[index];
			
			
            /*
            	将城市下拉菜单中的所有标签删除
            */
			//我们需要把显示的数据显示到城市这个下拉菜单中,首先需要获取到城市下拉菜单的节点,再获取到它的子节点,也就是具体的城市,将他们删除后,再将获取到的信息显示在城市下拉菜单中
			//获取到城市下拉菜单的节点
			var cityNode = document.getElementById("city");
			//获取到城市下拉菜单的子节点,也就是具体的城市选项,得到的是一个子节点数组
			var cityChildNodes = cityNode.childNodes;
			//将所有的cityChilds删除,也就是城市下拉菜单中的所有元素。
            //for循环这里没有变量自增,是因为每当删除一个城市后,下一个城市就自动向前,所以只用一直删除第一个城市即可。
			for(var i = 0; i < cityChildNodes.length; ){
				cityNode.removeChild(cityChildNodes[i]);
			}
			
			
            /*
            	将得到的城市数组显示在城市的下拉列表中
            */
			//将获取的城市显示到城市下拉菜单的option标签中
			for(var i = 0; i < showCity.length; i++){
				//创建一个option标签用于存放具体的城市
				var optionCityNode = document.createElement("option");
				//将查询到的城市添加到option标签中
				optionCityNode.innerHTML = showCity[i];
				//将optionCityNode标签添加到城市下拉菜单中
				cityNode.appendChild(optionCityNode);
			}
		}
	</script>
  • 7
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
HTML省份城市联动选择下拉菜单可以通过JavaScript实现。以下是一个简单的示例代码: ```html <label for="province">省份:</label> <select id="province" onchange="updateCities()"> <option value="">请选择</option> <option value="北京">北京</option> <option value="上海">上海</option> <option value="广东">广东</option> </select> <label for="city">城市:</label> <select id="city"> <option value="">请选择</option> </select> <script> const citiesByProvince = { '北京': ['北京市'], '上海': ['上海市'], '广东': ['广州市', '深圳市', '珠海市'] }; function updateCities() { const provinceSelect = document.getElementById('province'); const citySelect = document.getElementById('city'); const selectedProvince = provinceSelect.value; // 清空城市下拉菜单 citySelect.innerHTML = '<option value="">请选择</option>'; // 如果选择省份,则添加对应城市选项 if (selectedProvince) { const cities = citiesByProvince[selectedProvince]; for (let i = 0; i < cities.length; i++) { const city = cities[i]; const option = document.createElement('option'); option.value = city; option.textContent = city; citySelect.appendChild(option); } } } </script> ``` 在这个示例中,我们使用了两个下拉菜单,分别用于选择省份城市。当用户选择省份时,相应的城市列表会动态更新。`citiesByProvince`对象存储了每个省份对应的城市列表。`updateCities`函数用于更新城市下拉菜单,它首先获取选择省份,然后根据省份添加相应的城市选项。 这只是一个简单的示例,实际应用中可能需要更复杂的逻辑和数据结构来处理省份城市之间的关系。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值