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 17 Javascript
一些实用的jQuery代码片段收集
Jul 12 Javascript
Javascript模块化编程(一)模块的写法最佳实践
Jan 17 Javascript
基于Bootstrap+jQuery.validate实现Form表单验证
Dec 16 Javascript
JS组件Bootstrap Select2使用方法详解
Apr 17 Javascript
js css实现垂直方向自适应的三角提示菜单
Jun 26 Javascript
JS实现n秒后自动跳转的两种方法
Nov 30 Javascript
angular-cli修改端口号【angular2】
Apr 19 Javascript
vue渲染时闪烁{{}}的问题及解决方法
Mar 28 Javascript
javascript实现5秒倒计时并跳转功能
Jun 20 Javascript
ES6 Symbol数据类型的应用实例分析
Jun 26 Javascript
详解如何使用Node.js实现热重载页面
May 06 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/12/30 PHP
ThinkPHP的URL重写问题
2014/06/22 PHP
Codeigniter(CI)框架分页函数及相关知识
2014/11/03 PHP
JavaScript实现滚动栏效果的方法
2015/04/27 PHP
Codeigniter中集成smarty和adodb的方法
2016/03/04 PHP
JavaScript的Cookies
2008/01/16 Javascript
通过隐藏option实现select的联动效果
2009/11/10 Javascript
基于jquery的滑动样例代码
2010/11/20 Javascript
js将字符串转成正则表达式的实现方法
2013/11/13 Javascript
js 剪切板应用clipboardData详细解析
2013/12/17 Javascript
采用call方式实现js继承
2014/05/20 Javascript
js实现选中复选框文字变色的方法
2015/08/14 Javascript
jQuery中的AjaxSubmit使用讲解
2016/09/25 Javascript
关于Javascript中document.cookie的使用
2017/03/08 Javascript
基于Vue2实现的仿手机QQ单页面应用功能(接入聊天机器人 )
2017/03/30 Javascript
JS简单实现点击按钮或文字显示遮罩层的方法
2017/04/27 Javascript
详解AngularJS controller调用factory
2017/05/19 Javascript
vue多页面开发和打包正确处理方法
2018/04/20 Javascript
Array数组对象中的forEach、map、filter及reduce详析
2018/08/02 Javascript
vue3.0中使用element的完整步骤
2021/03/04 Vue.js
vue打开新窗口并实现传参的图文实例
2021/03/04 Vue.js
python进程管理工具supervisor的安装与使用教程
2017/09/05 Python
Python排序搜索基本算法之冒泡排序实例分析
2017/12/09 Python
Python操作MySQL模拟银行转账
2018/03/12 Python
对Python3.x版本print函数左右对齐详解
2018/12/22 Python
Python matplotlib学习笔记之坐标轴范围
2019/06/28 Python
利用keras使用神经网络预测销量操作
2020/07/07 Python
使用python实现学生信息管理系统
2021/02/25 Python
HTML5的Video标签有部分MP4无法播放的问题解析(多图)
2017/08/18 HTML / CSS
德国高尔夫商店:Golfshop.de
2019/06/22 全球购物
甲方资料员岗位职责
2013/12/13 职场文书
元旦联欢会主持词
2014/03/26 职场文书
家长通知书教师评语
2014/04/17 职场文书
销售辞职信范文
2015/03/02 职场文书
小学信息技术教学反思
2016/02/16 职场文书
SpringBoot Http远程调用的方法
2022/08/14 Java/Android