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 相关文章推荐
超级强大的表单验证
Jun 26 Javascript
js相册效果代码(点击创建即可)
Apr 16 Javascript
Jquery增加鼠标中间功能mousewheel的实例代码
Sep 05 Javascript
js浏览器本地存储store.js介绍及应用
May 13 Javascript
深入理解JavaScript系列(43):设计模式之状态模式详解
Mar 04 Javascript
jQuery添加删除DOM元素方法详解
Jan 18 Javascript
浅析Javascript ES6新增值比较函数Object.is
Aug 24 Javascript
JavaScript 异步调用
Oct 25 Javascript
vue.js实现的绑定class操作示例
Jul 06 Javascript
JS获取本地地址及天气的方法实例小结
May 10 Javascript
详解如何使用React Hooks请求数据并渲染
Oct 18 Javascript
vue中defineProperty和Proxy的区别详解
Nov 30 Vue.js
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项目应该注意的几点事项分享
2013/12/20 PHP
在Laravel框架里实现发送邮件实例(邮箱验证)
2016/05/20 PHP
Thinkphp整合微信支付功能
2016/12/14 PHP
鼠标滚轮控制网页横向移动实现思路
2013/03/22 Javascript
node.js中的emitter.on方法使用说明
2014/12/10 Javascript
jquery中animate的stop()方法作用实例分析
2015/01/30 Javascript
JS实现仿QQ聊天窗口抖动特效
2015/05/10 Javascript
基于JavaScript代码实现pc与手机之间的跳转
2015/12/23 Javascript
浅谈JavaScript 浏览器对象
2016/06/03 Javascript
深入理解javascript作用域第二篇之词法作用域和动态作用域
2016/07/24 Javascript
原生js的RSA和AES加密解密算法
2016/10/08 Javascript
Angular.Js的自动化测试详解
2016/12/09 Javascript
jQuery animate()实现背景色渐变效果的处理方法【使用jQuery.color.js插件】
2017/03/15 Javascript
JavaScript运动框架 链式运动到完美运动(五)
2017/05/18 Javascript
js 毫秒转天时分秒的实例
2017/11/17 Javascript
对angular4子路由&amp;辅助路由详解
2018/10/09 Javascript
vue-cli在 history模式下的配置详解
2019/11/26 Javascript
浅谈vue中$event理解和框架中在包含默认值外传参
2020/08/07 Javascript
Python自动化构建工具scons使用入门笔记
2015/03/10 Python
Python中的日期时间处理详解
2016/11/17 Python
Python 专题三 字符串的基础知识
2017/03/19 Python
利用Python破解斗地主残局详解
2017/06/30 Python
django框架之cookie/session的使用示例(小结)
2018/10/15 Python
python实现文件批量编码转换及注意事项
2019/10/14 Python
PHP基于phpqrcode类库生成二维码过程解析
2020/05/28 Python
python设置中文界面实例方法
2020/10/27 Python
利用HTML5+css3+jquery+weui实现仿微信聊天界面功能
2018/01/08 HTML / CSS
写好求职应聘自荐信的三部曲
2013/09/21 职场文书
商业活动邀请函
2014/02/04 职场文书
解除劳动合同协议书
2014/04/14 职场文书
缓刑人员思想汇报500字
2014/09/12 职场文书
自主招生学校推荐信范文
2015/03/26 职场文书
政府会议通知范文
2015/04/15 职场文书
2015年售后服务工作总结
2015/04/25 职场文书
健身房被搭讪?用python写了个小米计时器助人为乐
2021/06/08 Python
一次MySQL启动导致的事故实战记录
2021/09/15 MySQL