原生JavaScript实现动态省市县三级联动下拉框菜单实例代码


Posted in Javascript onFebruary 03, 2016

像平时购物选择地址时一样,通过选择的省动态加载城市列表,通过选择的城市动态加载县区列表,从而可以实现省市县的三级联动,下面使用原生的JavaScript来实现这个功能:

先给大家展示下测试结果:

未做任何选择时:

原生JavaScript实现动态省市县三级联动下拉框菜单实例代码

选择时:

原生JavaScript实现动态省市县三级联动下拉框菜单实例代码

代码如下所示:

<!DOCTYPE html>
<html>
<head lang="en">
<meta charset="UTF-8">
<title>三级联动测试</title>
<script src="jquery-2.1.4.min.js"></script>
<script type="text/javascript">
//用来获得option元素中selected属性为true的元素的id
function Get_Selected_Id(place){
var pro = document.getElementById(place);
var Selected_Id = pro.options[pro.selectedIndex].id;
return Selected_Id; //返回selected属性为true的元素的id
}
//改变下一个级联的option元素的内容,即加载市或县
function Get_Next_Place(This_Place_ID,Action){
var Selected_Id = Get_Selected_Id(This_Place_ID); //Selected_Id用来记录当前被选中的省或市的ID
if(Action=='Get_city') //从而可以在下一个级联中加载相应的市或县
Add_city(Selected_Id);
else if(Action=='Get_country')
Add_country(Selected_Id);
}
//用来存储省市区的数据结构
var Place_dict = {
"GuangDong":{
"GuangZhou":["PanYu","HuangPu","TianHe"],
"QingYuan":["QingCheng","YingDe","LianShan"],
"FoShan":["NanHai","ShunDe","SanShui"]
},
"ShanDong":{
"JiNan":["LiXia","ShiZhong","TianQiao"],
"QingDao":["ShiNan","HuangDao","JiaoZhou"]
},
"HuNan":{
"ChangSha":["KaiFu","YuHua","WangCheng"],
"ChenZhou":["BeiHu","SuXian","YongXian"]
}
};
//加载城市选项
function Add_city(Province_Selected_Id){
$("#city").empty();
$("#city").append("<option>City</option>");
$("#country").empty();
$("#country").append("<option>Country</option>");
//上面的两次清空与两次添加是为了保持级联的一致性
var province_dict = Place_dict[Province_Selected_Id]; //获得一个省的字典
for(city in province_dict){ //取得省的字典中的城市
//添加内容的同时在option标签中添加对应的城市ID
var text = "<option"+" id='"+city+"'>"+city+"</option>";
$("#city").append(text);
console.log(text); //用来观察生成的text数据
}
}
//加载县区选项
function Add_country(City_Selected_Id){
$("#country").empty();
$("#country").append("<option>Country</option>");
//上面的清空与添加是为了保持级联的一致性
var Province_Selected_ID = Get_Selected_Id("province"); //获得被选中省的ID,从而方便在字典中加载数据
var country_list = Place_dict[Province_Selected_ID][City_Selected_Id]; //获得城市列表
for(index in country_list){
////添加内容的同时在option标签中添加对应的县区ID
var text = "<option"+" id=\'"+country_list[index]+"\'>"+country_list[index]+"</option>";
$("#country").append(text);
console.log(text); //用来观察生成的text数据
}
}
</script>
</head>
<body>
<p>您的收货地址:</p>
<select id="province" onchange="Get_Next_Place('province','Get_city')">
<option id="Not_data1">Province</option>
<option id="GuangDong" value="GuangDong">GuangDong</option>
<option id="ShanDong" value="ShanDong">ShanDong</option>
<option id="HuNan" value="HuNan">HuNan</option>
</select>
<select id="city" onchange="Get_Next_Place('city','Get_country')">
<option id="Not_data2">City</option>
</select>
<select id="country">
<option id="Not_data3">Country</option>
</select>
<br/>
</body>
</html>

当然,省市县三者都是动态联动的,只要顶级的内容发生改变,所有子级的内容也会发生改变或被重置为City或Country.

以上所述是小编给大家分享的原生JavaScript实现动态省市县三级联动下拉框菜单实例代码,希望对大家有所帮助。

Javascript 相关文章推荐
读jQuery之四(优雅的迭代)
Jun 20 Javascript
jQuery最佳实践完整篇
Aug 20 Javascript
js实现大转盘抽奖游戏实例
Jun 24 Javascript
JS使用正则表达式除去字符串中重复字符的方法
Nov 05 Javascript
BootStrap 弹出层代码
Feb 09 Javascript
JavaScript实现弹窗效果代码分析
Mar 09 Javascript
jQuery实现弹窗下底部页面禁止滑动效果
Dec 19 jQuery
JS限制输入框输入的实现代码
Jul 02 Javascript
Vue组件间通信 Vuex的用法解析
Aug 05 Javascript
vue和iview实现Scroll 数据无限滚动功能
Oct 31 Javascript
Vue项目结合Vue-layer实现弹框式编辑功能(实例代码)
Mar 11 Javascript
JS判断数组是否包含某元素实现方法汇总
Jun 24 Javascript
AngularJS向后端ASP.NET API控制器上传文件
Feb 03 #Javascript
javascript DIV实现跟随鼠标移动
Mar 19 #Javascript
javascript鼠标右键菜单自定义效果
Dec 08 #Javascript
JavaScript获取当前运行脚本文件所在目录的方法
Feb 03 #Javascript
JavaScript获取对象在页面中位置坐标的方法
Feb 03 #Javascript
基于jQuery实现select下拉选择可输入附源码下载
Feb 03 #Javascript
javascript点击按钮实现隐藏显示切换效果
Feb 03 #Javascript
You might like
php下实现伪 url 的超简单方法[转]
2007/09/24 PHP
让你的博文自动带上缩址的实现代码,方便发到微博客上
2010/12/28 Javascript
关于递归运算的顺序测试代码
2011/11/30 Javascript
JQuery验证jsp页面属性是否为空(实例代码)
2013/11/08 Javascript
JavaScript中实现单体模式分享
2015/01/29 Javascript
jQuery监控文本框事件并作相应处理的方法
2015/04/16 Javascript
JavaScript SHA512&amp;SHA256加密算法详解
2015/08/11 Javascript
Bootstrap每天必学之面板
2015/11/30 Javascript
jQuery添加和删除输入文本框标签代码
2016/05/20 Javascript
JavaScript数据操作_浅谈原始值和引用值的操作本质
2016/08/23 Javascript
JavaScript实现经典排序算法之插入排序
2016/12/28 Javascript
angular学习之ngRoute路由机制
2017/04/12 Javascript
Node.js环境下Koa2添加travis ci持续集成工具的方法
2017/06/19 Javascript
常用的 JS 排序算法 整理版
2018/04/05 Javascript
一个基于react的图片裁剪组件示例
2018/04/18 Javascript
layui select获取自定义属性方法
2018/08/15 Javascript
了解JavaScript中let语句
2019/05/30 Javascript
[01:00] DOTA2英雄背景故事第五期之重力引力法则谜团
2020/07/16 DOTA
linux环境下python中MySQLdb模块的安装方法
2017/06/16 Python
Flask框架信号用法实例分析
2018/07/24 Python
使用Python做定时任务及时了解互联网动态
2019/05/15 Python
windows安装TensorFlow和Keras遇到的问题及其解决方法
2019/07/10 Python
python实现获取单向链表倒数第k个结点的值示例
2019/10/24 Python
shell程序中如何注释
2012/02/17 面试题
高三毕业生自我鉴定
2013/12/20 职场文书
《小蝌蚪找妈妈》教学反思
2014/02/21 职场文书
销售人员求职的自我评价分享
2014/03/15 职场文书
初一新生军训方案
2014/05/22 职场文书
经济管理专业求职信
2014/06/09 职场文书
志愿者活动总结报告
2014/06/27 职场文书
房屋财产继承协议书范本
2014/11/03 职场文书
2014年保洁工作总结
2014/11/24 职场文书
写给同学的新学期寄语
2015/02/27 职场文书
办公室主任岗位竞聘书
2015/09/15 职场文书
python爬虫请求库httpx和parsel解析库的使用测评
2021/05/10 Python
Python selenium的这三种等待方式一定要会!
2021/06/10 Python