1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > JavaScript实现select下拉菜单省份和城市的级联菜单

JavaScript实现select下拉菜单省份和城市的级联菜单

时间:2021-08-31 18:49:55

相关推荐

JavaScript实现select下拉菜单省份和城市的级联菜单

使用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);}}

最终实现效果:

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。