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 相关文章推荐
通过ifame指向的页面高度调整iframe的高度
Oct 05 Javascript
图片自动缩小的js代码,用以防止图片撑破页面
Mar 12 Javascript
JS中的prototype与面向对象的实例讲解
May 22 Javascript
js操作输入框提示信息且响应鼠标事件
Mar 25 Javascript
js中各种类型的变量在if条件中是true还是false
Jul 16 Javascript
js实现鼠标滑过文字链接色彩变化的效果
May 06 Javascript
值得学习的bootstrap fileinput文件上传工具
Nov 08 Javascript
DOM 事件的深入浅出(二)
Dec 05 Javascript
jQuery基于正则表达式的表单验证功能示例
Jan 21 Javascript
Vue2.0 http请求以及loading展示实例
Mar 06 Javascript
详解node.js 事件循环
Jul 22 Javascript
OpenLayers3加载常用控件使用方法详解
Sep 25 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中批量替换文件名的实现代码
2011/07/20 PHP
让Nginx支持ThinkPHP的URL重写和PATHINFO的方法分享
2011/08/08 PHP
几个有用的php字符串过滤,转换函数代码
2012/05/01 PHP
php数组的概述及分类与声明代码演示
2013/02/26 PHP
PHP加密扩展库Mcrypt安装和实例
2013/11/10 PHP
快速解决PHP调用Word组件DCOM权限的问题
2017/12/27 PHP
javascript之可拖动的iframe效果代码
2008/08/01 Javascript
[原创]js获取数组任意个不重复的随机数组元素
2010/03/15 Javascript
基于jquery的滑动样例代码
2010/11/20 Javascript
css+js实现部分区域高亮可编辑遮罩层
2014/03/04 Javascript
浅谈JavaScript 代码整洁之道
2018/10/23 Javascript
gulp构建小程序的方法步骤
2019/05/31 Javascript
jQuery实现中奖播报功能(让文本滚动起来) 简单设置数值即可
2020/03/20 jQuery
vue实现公告栏文字上下滚动效果的示例代码
2020/06/16 Javascript
利用Vue实现简易播放器的完整代码
2020/12/30 Vue.js
Python 文件和输入输出小结
2013/10/09 Python
在Python中操作列表之List.append()方法的使用
2015/05/20 Python
centos6.7安装python2.7.11的具体方法
2017/01/16 Python
django项目运行因中文而乱码报错的几种情况解决
2017/11/07 Python
使用Eclipse如何开发python脚本
2018/04/11 Python
python版本单链表实现代码
2018/09/28 Python
Python实现将通信达.day文件读取为DataFrame
2018/12/22 Python
Python设计模式之迭代器模式原理与用法实例分析
2019/01/10 Python
Python3.5基础之函数的定义与使用实例详解【参数、作用域、递归、重载等】
2019/04/26 Python
Python定时任务工具之APScheduler使用方式
2019/07/24 Python
Python实现中值滤波去噪方式
2019/12/18 Python
Python PIL库图片灰化处理
2020/04/07 Python
Html5上传图片 移动端、PC端通用代码
2016/06/08 HTML / CSS
鱼油专家:Omegavia
2016/10/10 全球购物
Melijoe英国官网:法国儿童时尚网站
2016/11/18 全球购物
关于旷工的检讨书
2014/02/02 职场文书
大学生学期自我鉴定
2014/03/19 职场文书
银行纠风工作实施方案
2014/06/08 职场文书
2015年路政工作总结
2015/05/22 职场文书
使用 CSS 轻松实现一些高频出现的奇形怪状按钮
2021/12/06 HTML / CSS