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 - HTML的request类
Jul 15 Javascript
JS控制图片翻转示例代码(兼容firefox,ie,chrome)
Dec 19 Javascript
IE的事件传递-event.cancelBubble示例介绍
Jan 12 Javascript
jQuery中removeData()方法用法实例
Dec 27 Javascript
js中split和replace的用法实例
Feb 28 Javascript
一看就懂:jsonp详解
Jun 01 Javascript
jQuery formValidator表单验证
Jan 07 Javascript
详解Vue2 无限级分类(添加,删除,修改)
Mar 07 Javascript
微信小程序之电影影评小程序制作代码
Aug 03 Javascript
vue项目设置scrollTop不起作用(总结)
Dec 21 Javascript
微信小程序实现单选选项卡切换效果
Jun 19 Javascript
jQuery实现的移动端图片缩放功能组件示例
May 01 jQuery
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抽象工厂模式(Elgg)
2010/03/21 PHP
如何解决CI框架的Disallowed Key Characters错误提示
2013/07/05 PHP
PHP的变量类型和作用域详解
2014/03/12 PHP
初识Laravel
2014/10/30 PHP
php中file_get_contents与curl性能比较分析
2014/11/08 PHP
Smarty模板变量调节器用法分析
2016/05/23 PHP
php实现文件预览功能
2017/05/23 PHP
PHP-FPM和Nginx的通信机制详解
2019/02/01 PHP
ThinkPHP5.0框架验证码功能实现方法【基于第三方扩展包】
2019/03/11 PHP
javascript String 对象
2008/04/25 Javascript
jQuery源码分析-01总体架构分析
2011/11/14 Javascript
js获取客户端网卡的IP地址、MAC地址
2014/03/26 Javascript
jquery if条件语句的写法
2016/05/19 Javascript
jQuery+json实现动态创建复杂表格table的方法
2016/10/25 Javascript
微信小程序实现滚动消息通知
2018/02/02 Javascript
微信小程序自定义多选事件的实现代码
2018/05/17 Javascript
javascript实现贪吃蛇游戏(娱乐版)
2020/08/17 Javascript
[07:57]DOTA2热力大趴狂欢夜 广州站活动回顾
2013/11/27 DOTA
[01:00] DOTA2英雄背景故事第五期之重力引力法则谜团
2020/07/16 DOTA
Python绘制的二项分布概率图示例
2018/08/22 Python
Python中浅拷贝copy与深拷贝deepcopy的简单理解
2018/10/26 Python
对Tensorflow中Device实例的生成和管理详解
2020/02/04 Python
python 读取.nii格式图像实例
2020/07/01 Python
PyTorch实现重写/改写Dataset并载入Dataloader
2020/07/14 Python
通信生自我鉴定
2014/01/18 职场文书
入党积极分子学习两会心得体会范文
2014/03/17 职场文书
工伤赔偿协议书
2014/04/15 职场文书
公司授权委托书格式样本
2014/10/01 职场文书
2014年乡镇妇联工作总结
2014/12/02 职场文书
单独二胎证明
2015/06/24 职场文书
大学生村官入党自传
2015/06/26 职场文书
2015年中学体育教师工作总结
2015/10/23 职场文书
优秀学生干部主要事迹材料
2015/11/04 职场文书
技术入股协议书
2016/03/22 职场文书
vue使用Google Recaptcha验证的实现示例
2021/08/23 Vue.js
Oracle查看表空间使用率以及爆满解决方案详解
2022/07/23 Oracle