使用JavaScript中变量定义省份及对应的城市,应用select标签对象,实现二级级联的下拉菜单选中效果。即在省份下拉菜单中选中一个省份时,在城市下拉菜单中出现该省份对应的城市。
HTML代码:
<div class="choosecity"><p>选择所在的省份及城市</p>省份:<select id="province"></select>城市:<select id="city"><option value="">---请选择---</option></select></div>
JavaScript代码:
1、定义数组存储省份数据和城市数据注:这里城市的数组下标使用的是省份名称
var provinceArr = ['北京市','天津市','上海市','重庆市','河北省','山西省','辽宁省','吉林省'];var cityArr = new Array();cityArr['北京市'] = ['北京市'];cityArr['天津市'] = ['天津市'];cityArr['上海市'] = ['上海市'];cityArr['重庆市'] = ['重庆市'];cityArr['河北省'] = ['石家庄市','张家口市','承德市','唐山市','秦皇岛市','廊坊市','保定市','沧州市','衡水市','邢台市','邯郸市'];cityArr['山西省'] = ['太原市','大同市','朔州市','忻州市','阳泉市','晋中市','吕梁市','长治市','临汾市','晋城市','运城市'];cityArr['辽宁省'] = ['沈阳市','铁岭市','阜新市','抚顺市','朝阳市','本溪市','辽阳市','鞍山市','盘锦市','锦州市','葫芦岛市','营口市','丹东市','大连市'];cityArr['吉林省'] = ['长春市','白城市','松原市','吉林市','四平市','辽源市','白山市','通化市'];
2、定义函数:显示省份注:这里使用立即执行函数 页面加载时就显示数据
(function displayProvince(){// 使用循环将省份显示到下拉菜单中for(let i = 0;i<provinceArr.length;i++){// 获取省份select控件let province = document.querySelector('#province');// 注册onchange事件:当省份发生改变 后面的城市也跟着变化province.onchange = displayCity;// 创建option节点let option = document.createElement('option');// 创建文本节点let pro = document.createTextNode(provinceArr[i]);// 将文本节点添加到option中option.appendChild(pro);// 将option追加到select中province.appendChild(option);}// 调用显示城市函数,让该方法也立即执行displayCity();})()
3、定义函数:显示城市
function displayCity(){// 获取城市select控件let city = document.querySelector('#city');// 先将option数据清空city.options.length = 1;// 获取省份中的value值let provice = document.querySelector('#province').value;// 循环添加省份所对应的城市for(let i = 0;i<cityArr[provice].length;i++){// 创建option节点let option = document.createElement('option');// 创建文本节点let citytxt = document.createTextNode(cityArr[provice][i]);// 将文本节点添加到option中option.appendChild(citytxt);// 将option追加到select中city.appendChild(option);}}
最终实现效果: