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 实现的点击复制代码
Mar 24 Javascript
Three.js源码阅读笔记(物体是如何组织的)
Dec 27 Javascript
$.get获取一个文件的内容示例代码
Sep 11 Javascript
简单的js表单验证函数
Oct 28 Javascript
js获取页面及个元素高度、宽度的代码
Apr 26 Javascript
node.js 动态执行脚本
Jun 02 Javascript
JavaScript实现树的遍历算法示例【广度优先与深度优先】
Oct 26 Javascript
Ionic学习日记实现验证码倒计时
Feb 08 Javascript
Vue2.0 事件的广播与接收(观察者模式)
Mar 14 Javascript
微信小程序wx:for循环的实例详解
Oct 07 Javascript
详解Vue template 如何支持多个根结点
Feb 10 Javascript
jQuery实现鼠标拖拽登录框移动效果
Sep 13 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
第三节--定义一个类
2006/11/16 PHP
php 字符串中的\n换行符无效、不能换行的解决方法
2014/04/02 PHP
php格式文件打开的四种方法
2018/02/24 PHP
用js实现的一个Flash滚动轮换显示图片代码生成器
2007/03/14 Javascript
javascript动态向网页中添加表格实现代码
2014/02/19 Javascript
JS控制表单提交的方法
2015/07/09 Javascript
js console.log打印对像与数组用法详解
2016/01/21 Javascript
详解vue-Resource(与后端数据交互)
2017/01/16 Javascript
JavaScript 程序错误Cannot use 'in' operator to search的解决方法
2017/07/10 Javascript
JS去掉字符串中所有的逗号
2017/10/18 Javascript
解决vue中监听input只能输入数字及英文或者其他情况的问题
2018/08/30 Javascript
Bootstrap4 gulp 配置详解
2019/01/06 Javascript
vue的列表交错过渡实现代码示例
2019/05/05 Javascript
vue2配置scss的方法步骤
2019/06/06 Javascript
详解mpvue开发微信小程序基础知识
2019/09/23 Javascript
vue-property-decorator用法详解
2019/12/12 Javascript
《javascript设计模式》学习笔记三:Javascript面向对象程序设计单例模式原理与实现方法分析
2020/04/07 Javascript
vue总线机制(bus)知识点详解
2020/05/10 Javascript
Webpack的Loader和Plugin的区别
2020/11/09 Javascript
[03:51]吞吞映像 每周精彩击杀top10第二弹
2014/06/25 DOTA
[24:42]VP vs TNC Supermajor小组赛B组 BO3 第三场 6.2
2018/06/03 DOTA
python开启多个子进程并行运行的方法
2015/04/18 Python
在Python 3中实现类型检查器的简单方法
2015/07/03 Python
Python统计纯文本文件中英文单词出现个数的方法总结【测试可用】
2018/07/25 Python
解决Python selenium get页面很慢时的问题
2019/01/30 Python
Python  Django 母版和继承解析
2019/08/09 Python
Python如何把多个PDF文件合并代码实例
2020/02/13 Python
利用4行Python代码监测每一行程序的运行时间和空间消耗
2020/04/22 Python
CSS3制作圆形滚动进度条动画的示例
2020/11/05 HTML / CSS
中国一家综合的外贸B2C电子商务网站:DealeXtreme(DX)
2020/03/10 全球购物
青年文明号服务承诺
2014/03/31 职场文书
干部竞争上岗演讲稿
2014/09/11 职场文书
2014年重阳节敬老活动方案
2014/09/16 职场文书
2015年计划生育责任书
2015/05/08 职场文书
泰坦尼克号观后感
2015/06/04 职场文书
微软Win11 全新照片应用面向 Dev预览版推出 新版本上手体验图集
2022/09/23 数码科技