JavaScript实现三级联动菜单效果


Posted in Javascript onAugust 16, 2017

三级联动考察的应该是对于数据的处理,只要清楚其中的关系,再多几级都是一样的:

html部分:

<!DOCTYPE html>
<html>
<head>
 <meta charset="utf-8" />
 <title>3级联动菜单</title>
 <script>
 var region = {
  广东:
  {
  "广州":["广州1","广州2","广州3"],

  "珠海":["珠海1","珠海2","珠海3"],

  "佛山":["佛山1"]
  },
  湖南:
  {
  "常德":["石门","桃源","临澧","汉寿"],

  "益阳":["益阳1","益阳2","益阳3"]
  }
 }
 </script>
</head>
 <body>

 <select id="province" onchange="change(this.value);">
  <option>请选择省份</option>
 </select>

 <select id="city" onchange="countyChange(this.value);">
  <option>请选择地市</option>
 </select>

 <select id="county">
  <option>请选择县城</option>
 </select>
 <script src='test.js'></script>
 </body>
</html>

js部分:

var province = document.querySelector("#province");
 var city = document.querySelector("#city");
 var county = document.querySelector("#county");
 //二级联动不用定义你选的省份,直接用省份(key)来决定下面的市(value)值
 var provinceName = null;

 for (ele in region){
 var op = new Option(ele , ele , false , false); //new Option("文本","值",true,true).后面两个true分别表示默认被选中和有效
 //console.log(op);
 province.options[province.length] = op;
 }

 var change = function(src){
 city.innerHTML = "";
 if(src === '请选择省份'){
  var op = new Option('请选择地市' , '请选择地市' , false , false);
  city.options[0] = op;
 }else{
  for (index in region[src]){
  //console.log(index);
  var op = new Option(index , index , false , false);
  city.options[city.length] = op;
  }
 }
 //记住选择省份的值
 provinceName=src;
 countyChange(city.value)
 }

 var countyChange = function(src2){
 county.innerHTML = "";
 if(src2 === '请选择地市'){
  var op = new Option('请选择县城','请选择县城', false , false);
  county.options[0] = op;
 }else{
  for (index in region[provinceName][src2]){
  //console.log(index);
  var op = new Option(region[provinceName][src2][index] , region[provinceName][src2][index] , false , false);
  county.options[county.length] = op;
  }
 }
 }

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
鼠标左键单击冲突的问题解决方法(防止冒泡)
May 14 Javascript
什么是cookie?js手动创建和存储cookie
May 27 Javascript
JavaScript中Object.prototype.toString方法的原理
Feb 24 Javascript
jQuery实现下拉加载功能实例代码
Apr 01 Javascript
基于BootStrap Metronic开发框架经验小结【三】下拉列表Select2插件的使用
May 12 Javascript
json传值以及ajax接收详解
May 24 Javascript
Vue动态实现评分效果
May 24 Javascript
vue利用v-for嵌套输出多层对象,分别输出到个表的方法
Sep 07 Javascript
Vue点击切换颜色的方法
Sep 13 Javascript
vue中datepicker的使用教程实例代码详解
Jul 08 Javascript
vue.js基于v-for实现批量渲染 Json数组对象列表数据示例
Aug 03 Javascript
原生JS实现音乐播放器
Jan 26 Javascript
ionic3 懒加载
Aug 16 #Javascript
JavaScript仿微信(电话)联系人列表滑动字母索引实例讲解(推荐)
Aug 16 #Javascript
理解 Node.js 事件驱动机制的原理
Aug 16 #Javascript
JavaScript选取(picking)和反选(rejecting)对象的属性方法
Aug 16 #Javascript
JavaScript-定时器0~9抽奖系统详解(代码)
Aug 16 #Javascript
vue实现留言板todolist功能
Aug 16 #Javascript
Angularjs中的验证input输入框只能输入数字和小数点的写法(推荐)
Aug 16 #Javascript
You might like
php 数组二分法查找函数代码
2010/02/16 PHP
PHP合并静态文件详解
2014/11/14 PHP
反射调用private方法实践(php、java)
2015/12/21 PHP
推荐11款jQuery开发的复选框和单选框美化插件
2011/08/02 Javascript
JQuery的Ajax中Post方法传递中文出现乱码的解决方法
2014/10/21 Javascript
深入理解JavaScript编程中的原型概念
2015/06/25 Javascript
jQuery实现的鼠标经过时变宽的效果(附demo源码)
2016/04/28 Javascript
详解基于angular路由的requireJs按需加载js
2017/01/20 Javascript
在Vue中如何使用Cookie操作实例
2017/07/27 Javascript
VUE长按事件需求详解
2017/10/18 Javascript
用Node编写RESTful API接口的示例代码
2018/07/04 Javascript
Canvas实现微信红包照片效果
2018/08/21 Javascript
玩转Koa之koa-router原理解析
2018/12/29 Javascript
JavaScript偏函数与柯里化实例详解
2019/03/27 Javascript
Node.js中package.json中库的版本号(~和^)
2019/04/02 Javascript
如何基于layui的laytpl实现数据绑定的示例代码
2020/04/10 Javascript
如何通过Proxy实现JSBridge模块化封装
2020/10/22 Javascript
JS创建自定义对象的六种方法总结
2020/12/15 Javascript
[59:36]2018DOTA2亚洲邀请赛 4.3 突围赛 Secret vs VG 第二场
2018/04/04 DOTA
Python编程之基于概率论的分类方法:朴素贝叶斯
2017/11/11 Python
PyQt5每天必学之事件与信号
2018/04/20 Python
Python中的 enum 模块源码详析
2019/01/09 Python
pycharm显示远程图片的实现
2019/11/04 Python
python生成特定分布数的实例
2019/12/05 Python
基于HTML5 Canvas 实现商场监控实例详解
2017/11/20 HTML / CSS
次世代生活态度:Hypebeast
2018/07/05 全球购物
香港现代设计家具品牌:Ziinlife Furniture
2018/11/13 全球购物
GAZMAN官网:澳大利亚领先的男装品牌
2019/12/19 全球购物
NULL是什么,它是怎么定义的
2015/05/09 面试题
京剧自荐信
2014/01/26 职场文书
创新比赛获奖感言
2014/02/13 职场文书
旅游管理毕业生自荐信范文
2014/03/19 职场文书
银行内勤岗位职责
2014/04/09 职场文书
Filebeat 采集 Nginx 日志的方法
2021/03/31 Servers
JavaScript继承的三种方法实例
2021/05/12 Javascript
JavaScript数组 几个常用方法总结
2021/11/11 Javascript