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+html5实现绘制圆环的方法
Jul 28 Javascript
使用impress.js制作幻灯片
Sep 09 Javascript
js数组去重的5种算法实现
Nov 04 Javascript
解决拦截器对ajax请求的拦截实例详解
Dec 21 Javascript
使用DeviceOne实现微信小程序功能
Dec 29 Javascript
Node.js 基础教程之全局对象
Aug 06 Javascript
vue-cli脚手架-bulid下的配置文件
Mar 27 Javascript
vue 之 .sync 修饰符示例详解
Apr 21 Javascript
详解Angular路由之路由守卫
May 10 Javascript
详解vue的数据劫持以及操作数组的坑
Apr 18 Javascript
VUE实现自身整体组件销毁的示例代码
Jan 13 Javascript
JavaScript中数组去重的5种方法
Jul 04 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 字符串替换的方法
2012/01/10 PHP
thinkphp微信开发(消息加密解密)
2015/12/02 PHP
laravel5.4生成验证码的实例讲解
2017/08/05 PHP
php封装db类连接sqlite3数据库的方法实例
2017/12/19 PHP
用户注册常用javascript代码
2009/08/29 Javascript
js和jquery批量绑定事件传参数一(新猪猪原创)
2010/06/23 Javascript
jquery uaMatch源代码
2011/02/14 Javascript
Notify - 基于jquery的消息通知插件
2011/10/18 Javascript
将Datatable转化成json发送前台实现思路
2013/09/06 Javascript
js 获取元素下面所有li的两种方法
2014/04/14 Javascript
JS操作JSON方法总结(推荐)
2016/06/14 Javascript
微信小程序 自定义消息提示框
2017/08/06 Javascript
详解Layer弹出层样式
2017/08/21 Javascript
React Native中NavigatorIOS组件的简单使用详解
2018/01/27 Javascript
React Form组件的实现封装杂谈
2018/05/07 Javascript
python中的闭包用法实例详解
2015/05/05 Python
用Python的Django框架来制作一个RSS阅读器
2015/07/22 Python
Python实现的爬虫刷回复功能示例
2018/06/07 Python
python挖矿算力测试程序详解
2019/07/03 Python
CSS3中的Media Queries学习笔记
2016/05/23 HTML / CSS
HTML5网页音乐播放器的示例代码
2017/11/09 HTML / CSS
法国最大电子商务平台:Cdiscount
2018/03/13 全球购物
什么造成了Java里面的异常
2016/04/24 面试题
ShellScript面试题一则-ShellScript编程
2014/03/05 面试题
毕业生教师求职信
2013/10/20 职场文书
财务副总经理工作职责
2013/11/25 职场文书
服装电子商务创业计划书
2014/01/30 职场文书
高中军训感言800字
2014/03/05 职场文书
核心价值观演讲稿
2014/05/13 职场文书
体育教师求职信
2014/05/24 职场文书
道路运输企业安全生产责任书
2014/07/28 职场文书
2014年党的群众路线教育实践活动整改措施(个人版)
2014/09/25 职场文书
领导班子四风问题对照检查材料
2014/09/27 职场文书
财务工作失职检讨书
2014/11/21 职场文书
水浒传读书笔记
2015/06/25 职场文书
党员发展大会主持词
2015/07/03 职场文书