原生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.lazyload  实现图片延迟加载jquery插件
Feb 06 Javascript
JS实现悬浮移动窗口(悬浮广告)的特效
Mar 12 Javascript
jquery eval解析JSON中的注意点介绍
Aug 23 Javascript
javascript 用函数语句和表达式定义函数的区别详解
Jan 06 Javascript
深入分析原生JavaScript事件
Dec 29 Javascript
使用Function.apply()的参数数组化来提高 JavaScript程序性能的技巧
Dec 23 Javascript
javascript实现粘贴qq截图功能(clipboardData)
May 29 Javascript
jquery一键控制checkbox全选、反选或全不选
Oct 16 jQuery
VUE搭建手机商城心得和遇到的坑
Feb 21 Javascript
javascript sort()对数组中的元素进行排序详解
Oct 13 Javascript
Vue+Element-UI实现上传图片并压缩
Nov 26 Javascript
基于javascript原生判断DOM是否加载完毕
Oct 14 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实现获取中英文首字母
2015/06/19 PHP
thinkphp表单上传文件并将文件路径保存到数据库中
2016/07/28 PHP
兼容多浏览器的iframe自适应高度(ie8 、谷歌浏览器4.0和 firefox3.5.3)
2009/11/04 Javascript
由JavaScript技术实现的web小游戏(不含网游)
2010/06/12 Javascript
举例详解Python中smtplib模块处理电子邮件的使用
2015/06/24 Javascript
javascript+HTML5自定义元素播放焦点图动画
2016/02/21 Javascript
JS实现点击事件统计的简单实例
2016/07/10 Javascript
KnockoutJS 3.X API 第四章之数据控制流foreach绑定
2016/10/10 Javascript
jQuery生成假加载动画效果
2016/12/01 Javascript
JS中input表单隐藏域及其使用方法
2017/02/13 Javascript
JavaScript方法_动力节点Java学院整理
2017/06/28 Javascript
用JS编写一个函数,返回数组中重复出现过的元素(实例)
2017/09/14 Javascript
vue复合组件实现注册表单功能
2017/11/06 Javascript
Vue组件教程之Toast(Vue.extend 方式)详解
2019/01/27 Javascript
详解Vue源码中一些util函数
2019/04/24 Javascript
echarts实现晶体球面投影的实例教程
2020/10/10 Javascript
[03:31]DOTA2英雄基础教程 大地之灵
2013/12/17 DOTA
python2.7的编码问题与解决方法
2016/10/04 Python
Python 2.7中文显示与处理方法
2018/07/16 Python
python读取图片并修改格式与大小的方法
2018/07/24 Python
python 解决cv2绘制中文乱码问题
2019/12/23 Python
python爬取王者荣耀全皮肤的简单实现代码
2020/01/31 Python
python剪切视频与合并视频的实现
2020/03/03 Python
详解python安装matplotlib库三种失败情况
2020/07/28 Python
聊聊python中的异常嵌套
2020/09/01 Python
Swisse官方海外旗舰店:澳大利亚销量领先,自然健康品牌
2017/12/15 全球购物
缓解脚、腿和背部疼痛:Z-CoiL鞋
2019/03/12 全球购物
美国最值得信赖的宠物药房:Allivet
2019/03/23 全球购物
编写一个类体现构造,公有,私有方法,静态,私有变量
2013/08/10 面试题
掌上明珠Java程序员面试总结
2016/02/23 面试题
购房公证委托书(2014版)
2014/09/12 职场文书
2014医学院领导班子对照检查材料思想汇报
2014/09/19 职场文书
安全生产工作汇报
2014/10/28 职场文书
MySql新手入门的基本操作汇总
2021/05/13 MySQL
解决Tkinter中button按钮未按却主动执行command函数的问题
2021/05/23 Python
云服务器部署 Web 项目的实现步骤
2022/06/28 Servers