js 实现省市区三级联动菜单效果


Posted in Javascript onFebruary 20, 2017

效果如下:

js 实现省市区三级联动菜单效果

代码如下:

<!DOCTYPE html>
<html>
<head>
 <meta charset="utf-8">
 <title>省市区三级联动</title>
</head>
<body>
 <form>
 <select id="province">
 <option>请选择省份</option>
 </select>
 <select id="city">
 <option>请选择城市</option>
 </select>
 <select id="district">
 <option>请选择区域</option>
 </select> 
 </form>
 <script src="json.js"></script>
 <script type="text/javascript">
 var proData = [],
 cityData = [],
 distData = [];
 var proSelect = document.getElementById("province"),
 citySelect = document.getElementById("city"),
 districtSelect = document.getElementById("district");
 var curPro = "",
 curCity = "";
 // 封装更新选择列表函数
 function fillselect(select,list){
 for (var i = select.length-1; i > 0 ; i--){
 select.remove(i);
 }
 list.forEach(function(data){
 var option = new Option(data.name, data.sheng);
 option.dataset.di = data.di;
 select.add(option);
 })
 }
 // 将数据按省、市、地区分别存储
 dataJson.forEach(function(data){
 if (data.level === 1){
 proData.push(data);
 }
 if (data.level === 2){
 cityData.push(data);
 }
 if (data.level === 3){
 distData.push(data);
 }
 })
 fillselect(proSelect,proData);
 // 监听一级省份选择列表change事件,更新二级城市列表
 proSelect.addEventListener("change",function(event){
 var val = event.target.value;
 var list = [];
 cityData.forEach(function(d){
 if (d.sheng === val) {
 list.push(d);
 }
 })
 fillselect(citySelect,list);
 })
 // 监听二级城市选择列表change事件,更新三级区域列表
 citySelect.addEventListener("change",function(event){
 var val = event.target.value;
 var curIndex = event.target.selectedIndex;
 curCity = event.target[curIndex].dataset.di;
 console.log(event.target,curCity);
 var list = [];
 distData.forEach(function(d){
 if (d.di === curCity && d.sheng === val) {
 list.push(d);
 }
 })
 fillselect(districtSelect,list);
 })
 </script>
</body>
</html>

以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,同时也希望多多支持三水点靠木!

Javascript 相关文章推荐
清华大学出版的事半功倍系列 javascript全部源代码
May 04 Javascript
textContent在Firefox下与innerText等效的属性
May 12 Javascript
Jquery进度条插件 Progress Bar小问题解决
Jul 12 Javascript
js中有关IE版本检测
Jan 04 Javascript
jQuery中live()方法用法实例
Jan 19 Javascript
jQuery手动点击实现图片轮播特效
Apr 20 Javascript
js仿微博实现统计字符和本地存储功能
Dec 22 Javascript
jquery.validate 自定义验证方法及validate相关参数
Jan 18 Javascript
jQuery的 $.ajax防止重复提交的两种方法(推荐)
Oct 14 Javascript
JS实现给对象动态添加属性的方法
Jan 05 Javascript
js-FCC算法-No repeats please字符串的全排列(详解)
May 02 Javascript
Vue表单之v-model绑定下拉列表功能
May 14 Javascript
js事件冒泡与事件捕获详解
Feb 20 #Javascript
关于ES6的六个小特性(二)
Feb 20 #Javascript
JavaScript 总结几个提高性能知识点(推荐)
Feb 20 #Javascript
JS批量替换内容中关键词为超链接
Feb 20 #Javascript
网页中右键功能的实现方法之contextMenu的使用
Feb 20 #Javascript
使用contextMenu插件实现Bootstrap table弹出右键菜单
Feb 20 #Javascript
Angular.js跨controller实现参数传递的两种方法
Feb 20 #Javascript
You might like
PHP入门学习的几个不错的实例代码
2008/07/13 PHP
深入理解php的MySQL连接类
2013/06/07 PHP
如何正确配置Nginx + PHP
2016/07/15 PHP
工作需要写的一个js拖拽组件
2011/07/28 Javascript
Jquery代码实现图片轮播效果(一)
2015/08/12 Javascript
JS实现的5级联动Select下拉选择框实例
2015/08/17 Javascript
Jquery 效果使用详解
2015/11/23 Javascript
jQuery使用$.ajax进行异步刷新的方法(附demo下载)
2015/12/04 Javascript
Angularjs material 实现搜索框功能
2016/03/08 Javascript
AngularJS国际化详解及示例代码
2016/08/18 Javascript
vue.js表格组件开发的实例详解
2016/10/12 Javascript
Angular使用ng-messages与PHP进行表单数据验证
2016/12/28 Javascript
简单实现IONIC购物车功能
2017/01/10 Javascript
JS实现侧边栏鼠标经过弹出框+缓冲效果
2017/03/29 Javascript
js实现指定时间倒计时效果
2019/08/26 Javascript
layui实现显示数据表格、搜索和修改功能示例
2020/06/03 Javascript
[00:32]2018DOTA2亚洲邀请赛VG出场
2018/04/03 DOTA
Pythont特殊语法filter,map,reduce,apply使用方法
2016/02/27 Python
全面了解python中的类,对象,方法,属性
2016/09/11 Python
利用python画一颗心的方法示例
2017/01/31 Python
python如何求解两数的最大公约数
2018/09/27 Python
用Python实现职工信息管理系统
2020/12/30 Python
css3+伪元素实现鼠标移入时下划线向两边展开的效果
2017/04/25 HTML / CSS
de Bijenkorf比利时官网:荷兰最知名的百货商店
2017/06/29 全球购物
瑜伽国际:Yoga International
2018/04/18 全球购物
DataList 能否分页,请问如何实现?
2015/05/03 面试题
我的五年职业生涯规划
2014/01/23 职场文书
优秀信贷员先进事迹
2014/01/31 职场文书
小学教师师德反思
2014/02/03 职场文书
小学网上祭英烈活动总结
2014/07/05 职场文书
村级干部党员公开承诺事项
2015/05/04 职场文书
2015年小学远程教育工作总结
2015/07/28 职场文书
医学会议开幕词
2016/03/03 职场文书
慰问信(范文3篇)
2019/10/23 职场文书
html+css实现赛博朋克风格按钮
2021/05/26 HTML / CSS
pytorch 两个GPU同时训练的解决方案
2021/06/01 Python