本文详细解析了JavaScript实现省市级联下拉菜单的三种常见方案。从基础的switch-case条件判断,到使用二维数组优化数据结构,再到利用对象键值对进行映射,逐步展示代码演进过程。通过对比不同实现方式的优缺点,帮助开发者根据实际需求选择最合适的级联交互逻辑,提升前端表单用户体验。
JavaScript实现省市级联下拉菜单的三种方法
本文通过具体实例,详细讲解如何利用JavaScript实现省市两级联动的下拉选择功能。内容旨在为开发者提供清晰的实现思路与代码参考,便于在实际项目中应用。
基础实现思路
首先介绍一种基础的实现思路:
<html>
<head>
<script language="javascript">
function changecity(){
var province = document.form1.selprovince.value;
var newoption1,newoption2;
switch(province){
case "四川省":
newoption1 = new Option("成都市", "chengdu");
newoption2 = new Option("绵阳市", "mianyang");
break;
case "湖北省" :
newoption1= new Option("武汉市","wuhan");
newoption2= new Option("襄樊市","xiangfan");
break;
case "山东省" :
newoption1= new Option("青岛市","qingdao");
newoption2= new Option("烟台市","yantai");
break;
}
document.form1.selcity.options.length=0;
document.form1.selcity.options.add(newoption1);
document.form1.selcity.options.add(newoption2);
}
</script>
</head>
<form name="form1" action="" method="post">
<select name="selprovince" onchange="changecity()">
<option>--请选择开户帐号的省份--</option>
<OPTION value="四川省">四川省</OPTION>
<OPTION value="山东省">山东省</OPTION>
<OPTION value="湖北省">湖北省</OPTION>
</select>
<select name="selcity">
<option>--请选择开户帐号的城市--</option>
</select>
</form>
</html>
改进方案一
随后展示一种改进后的实现方案:
<html>
<head>
<script language="javascript">
function changecity(){
var cityList = new Array();
cityList[0]=['成都', '绵阳', '德阳', '自贡'];
cityList[1]=['济南', '青岛', '淄博', '枣庄'];
cityList[2]=['武汉', '宜昌', '荆州', '襄樊'];
var pindex = document.form1.selprovince.selectedIndex-1;
var newoption1;
document.form1.selcity.options.length = 0;
for(var j in cityList[pindex]){
newoption1 = new Option(cityList[pindex][j], cityList[pindex][j]);
document.form1.selcity.options.add(newoption1);
}
}
</script>
</head>
<form name="form1" action="" method="post">
<select name="selprovince" onchange="changecity()">
<option>--请选择省份--</option>
<OPTION value="四川省">四川省</OPTION>
<OPTION value="山东省">山东省</OPTION>
<OPTION value="湖北省">湖北省</OPTION>
</select>
<select name="selcity">
<option>--请选择城市--</option>
</select>
</form>
</html>
改进方案二:对象映射法
进一步演示第二种改进方法,优化数据结构:
<html>
<head>
<script language="javascript">
function citychange(){
var cityList = new Array();
cityList['辽宁省'] = ['沈阳','鞍山','大连'];
cityList['山东省'] = ['济南','烟台','蓬莱'];
cityList['山西省'] = ['太原','大同','平遥'];
var pindex = document.form1.selprovince.value;
var newoption1;
document.form1.selcity.options.length = 0;
for(var i in cityList[pindex]){
newoption1 = new Option(cityList[pindex][i],cityList[pindex][i]);
document.form1.selcity.options.add(newoption1);
}
}
</script>
</head>
<form action="" name="form1" method="post">
<select name="selprovince" onchange="citychange()">
<option>请选择省份</option>
<OPTION value="辽宁省">辽宁省</OPTION>
<OPTION value="山东省">山东省</OPTION>
<OPTION value="山西省">山西省</OPTION>
</select>
<select name="selcity">
<option>请选择城市</option>
</select>
</form>
</html>
希望上述关于JavaScript程序设计的内容,能为读者在处理类似前端交互需求时提供有价值的参考与帮助。