原生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 Select操作方法集合脚本之家特别版
May 17 Javascript
关于JS管理作用域的问题
Apr 10 Javascript
jquery制作弹窗提示窗口代码分享
Mar 02 Javascript
div失去焦点事件实现思路
Apr 22 Javascript
使用Jasmine和Karma对AngularJS页面程序进行测试
Mar 05 Javascript
JS数组操作(数组增加、删除、翻转、转字符串、取索引、截取(切片)slice、剪接splice、数组合并)
May 20 Javascript
JavaScript实现简单的四则运算计算器完整实例
Apr 28 Javascript
JavaScript实现三级级联特效
Nov 05 Javascript
网页爬虫之cookie自动获取及过期自动更新的实现方法
Mar 06 Javascript
JavaScript遍历查找数组中最大值与最小值的方法示例
May 24 Javascript
通过vue.extend实现消息提示弹框的方法记录
Jan 07 Vue.js
webpack的移动端适配方案小结
Jul 25 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
超神学院:天使彦公认最美的三个视角,网友:我的天使快下凡吧!
2020/03/02 国漫
php实现微信公众平台账号自定义菜单类
2014/12/02 PHP
php使用curl详细解析及问题汇总
2016/08/11 PHP
php原生导出excel文件的两种方法(推荐)
2016/11/19 PHP
PHP四种排序算法实现及效率分析【冒泡排序,插入排序,选择排序和快速排序】
2018/04/27 PHP
Laravel框架路由设置与使用示例
2018/06/12 PHP
Yii2框架实现利用mpdf创建pdf文件功能示例
2019/02/08 PHP
利用js获取服务器时间的两个简单方法
2010/01/08 Javascript
在Node.js中实现文件复制的方法和实例
2014/06/05 Javascript
跟我学习javascript的arguments对象
2015/11/16 Javascript
JavaScript实现通过select标签跳转网页的方法
2016/09/29 Javascript
前端主流框架vue学习笔记第一篇
2017/07/26 Javascript
Vue实现点击后文字变色切换方法
2018/02/11 Javascript
详解使用mpvue开发github小程序总结
2018/07/25 Javascript
Moment.js实现多个同时倒计时
2019/08/26 Javascript
微信公众号H5之微信分享常见错误和问题(小结)
2019/11/14 Javascript
vue中全局路由守卫中替代this操作(this.$store/this.$vux)
2020/07/24 Javascript
[01:38]DOTA2辉夜杯 欢乐的观众现场采访
2015/12/26 DOTA
Python使用设计模式中的责任链模式与迭代器模式的示例
2016/03/02 Python
基于Django的python验证码(实例讲解)
2017/10/23 Python
Python嵌套列表转一维的方法(压平嵌套列表)
2018/07/03 Python
对pandas中Series的map函数详解
2018/07/25 Python
对Python中plt的画图函数详解
2018/11/07 Python
python openpyxl使用方法详解
2019/07/18 Python
django admin.py 外键,反向查询的实例
2019/07/26 Python
Django框架组成结构、基本概念与文件功能分析
2019/07/30 Python
Python Django 页面上展示固定的页码数实现代码
2019/08/21 Python
Python 实现自动导入缺失的库
2019/10/29 Python
python如何基于redis实现ip代理池
2020/01/17 Python
python3 字符串知识点学习笔记
2020/02/08 Python
CSS3制作炫酷的自定义发光文字
2016/03/28 HTML / CSS
幼儿园英语教学反思
2014/01/30 职场文书
小学生综合素质评语
2014/04/23 职场文书
建国大业观后感
2015/06/01 职场文书
Mysql - 常用函数 每天积极向上
2021/04/05 MySQL
Mysql事务索引知识汇总
2022/03/17 MySQL