JavaScript实现三级联动效果


Posted in Javascript onJuly 15, 2017

三级联动:就是平时网页上需要选择的省市县对应位置的下拉栏模块,当选择好省位置后市的下拉栏更新为已选省的,县类似。

JavaScript实现三级联动效果

<!DOCTYPE html>
<html>
<head lang="en">
  <meta charset="UTF-8">
  <title>三级联动</title>
</head>
<body>
<select id="sheng">
  <option value="">-请选择-</option><!--先创建三个下拉栏,分别对应 省 市 县-->
</select>

<select id="shi">
  <option value="">-请选择-</option>
</select>

<select id="xian">
  <option value="">-请选择-</option>
</select>
<script>
  var osheng=document.getElementById("sheng");
  var oshi=document.getElementById("shi");
  var oxian=document.getElementById("xian");

  var arr_sheng=["陕西省","云南省","四川省","山西省"];<!--创建一个一维数组,存入省的值-->

  var arr_shi=[<!--创建一个二维数组,最外层每一个元素对应省-->
    ["西安市","咸阳市","宝鸡市","渭南市"],<!--数组中的第一个元素内又定义一个数组存的市的值-->
    ["昆明市","大理市","丽江市","西双版纳市"],
    ["乐山市","成都市","大同市","高新市"],
    ["太原市","屏显市","乐宝市","李伟市"]
  ];

  var arr_xian=[<!--创建一个三维数组,最外层每一个元素(对应省)-->
      [<!--数组中定义四个数组(对应市)-->
        ["西安县1","西安县2"],["咸阳市1","咸阳市2"],["宝鸡市1","宝鸡市2"],["渭南市1","渭南市2"]
      ],<!--数组中定义两个元素(对应县)-->
      [
        ["昆明市1","昆明市2"],["大理市1","大理市2"],["丽江市1","丽江市2"],["西双版纳市1","西双版纳市2"]
      ],
      [
        ["乐山市1","乐山市2"],["成都市1","成都市2"],["大同市1","大同市2"],["高新市1","高新市2"]
      ],
      [
        ["太原市1","太原市2"],["屏显市1","屏显市2"],["乐宝市1","乐宝市2"],["李伟市1","李伟市2"]
      ]
  ];

  var quanju_arr;//创建一个全局对象,用于存储一个中间数组

  function input_arr(arr,event){//封装一个函数,用于向下拉栏中添加元素
    for(var i=0;i<arr.length;i++){//下拉栏内的元素来源于数组中的元素,遍历数组
      var option=new Option(arr[i],i);//创建Option对象(这个O要大写),存入值
      event.appendChild(option);//把option添加到event对象的末尾
    }
  }

  input_arr(arr_sheng,osheng);//调用,给省下拉栏添元素

  osheng.onchange= function () {//给下拉栏绑定事件(当下拉栏元素改变时执行)
    oshi.options.length=1;//当省下拉栏改变时,清空市的下拉栏内元素
    oxian.options.length=1;//当省下拉栏改变时,清空县的下拉栏内元素
    var index=this.value;//每一个option标签都有一个value值索引,获取索引,用于数组中元素的选择
    var arr_shi_next=arr_shi[index];//获取当前选择省的市元素并赋给一个数组
    quanju_arr=arr_xian[index];//获取当前选择省中市的县元素并赋给定义的中间数组
    input_arr(arr_shi_next,oshi);//调用,给市下拉栏添元素
  }

  oshi.onchange= function () {
    oxian.options.length=1;
    var index=this.value;
    var arr_xian_next=quanju_arr[index];
    input_arr(arr_xian_next,oxian);//调用,给县下拉栏添元素
  }
</script>
</body>
</html>

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

Javascript 相关文章推荐
网页的标准,IMG不支持onload标签怎么办
Jun 29 Javascript
基于jquery的用鼠标画出可移动的div
Sep 06 Javascript
ExtJS 刷新后如何默认选中刷新前最后一次选中的节点
Apr 03 Javascript
JS中字符串trim()使用示例
May 26 Javascript
Javascript实现图片轮播效果(一)让图片跳动起来
Feb 17 Javascript
Bootstrap源码解读导航条(7)
Dec 23 Javascript
详解vue2.0的Element UI的表格table列时间戳格式化
Jun 13 Javascript
jQuery插件DataTables分页开发心得体会
Aug 22 jQuery
Angular5升级RxJS到5.5.3报错:EmptyError: no elements in sequence的解决方法
Apr 09 Javascript
vue组件表单数据回显验证及提交的实例代码
Aug 30 Javascript
详解IOS微信上Vue单页面应用JSSDK签名失败解决方案
Nov 14 Javascript
基于原生js实现九宫格算法代码实例
Jul 03 Javascript
BackBone及其实例探究_动力节点Java学院整理
Jul 14 #Javascript
backbone简介_动力节点Java学院整理
Jul 14 #Javascript
bootstrap基本配置_动力节点Java学院整理
Jul 14 #Javascript
easyui简介_动力节点Java学院整理
Jul 14 #Javascript
bootstrap是什么_动力节点Java学院整理
Jul 14 #Javascript
bootstrap精简教程_动力节点Java学院整理
Jul 14 #Javascript
简单实现js轮播图效果
Jul 14 #Javascript
You might like
Symfony2创建基于域名的路由相关示例
2016/11/14 PHP
PHP 500报错的快速解决方法
2016/12/14 PHP
PHP使用finfo_file()函数检测上传图片类型的实现方法
2017/04/18 PHP
深入理解Yii2.0乐观锁与悲观锁的原理与使用
2017/07/26 PHP
JavaScript高级程序设计 读书笔记之十 本地对象Date日期
2012/02/27 Javascript
jquery让指定的元素闪烁显示的方法
2015/03/17 Javascript
深入剖析JavaScript编程中的对象概念
2015/10/21 Javascript
基于JavaScript如何实现ajax调用后台定义的方法
2015/12/29 Javascript
js判断复选框是否选中及选中个数的实现代码
2016/05/30 Javascript
js匿名函数作为函数参数详解
2016/06/01 Javascript
详解Nodejs的timers模块
2016/12/22 NodeJs
BootStrap table删除指定行的注意事项(笔记整理)
2017/02/05 Javascript
JavaScript实现的鼠标响应颜色渐变效果完整实例
2017/02/18 Javascript
JavaScript中的return布尔值的用法和原理解析
2017/08/14 Javascript
微信小程序getPhoneNumber获取用户手机号
2017/09/29 Javascript
详解基于vue-cli配置移动端自适应
2018/01/13 Javascript
Angular ng-animate和ng-cookies用法详解
2018/04/18 Javascript
微信小程序实现tab页面切换功能
2018/07/13 Javascript
解决ng-repeat产生的ng-model中取不到值的问题
2018/10/02 Javascript
JavaScript实现简单随机点名器
2019/11/21 Javascript
javascript用defineProperty实现简单的双向绑定方法
2020/04/03 Javascript
Vue.js使用axios动态获取response里的data数据操作
2020/09/08 Javascript
[01:02:10]DOTA2上海特级锦标赛B组小组赛#2 VG VS Fnatic第一局
2016/02/26 DOTA
Python 文件操作的详解及实例
2017/09/18 Python
pygame实现打字游戏
2021/02/19 Python
Python类继承和多态原理解析
2020/02/05 Python
tensorflow使用freeze_graph.py将ckpt转为pb文件的方法
2020/04/22 Python
Python基于pillow库实现生成图片水印
2020/09/14 Python
优秀员工自荐书
2013/12/19 职场文书
学校采购员岗位职责
2014/01/02 职场文书
采购类个人求职的自我评价
2014/02/18 职场文书
总经理助理岗位职责范本
2015/03/31 职场文书
运动会加油稿30字
2015/07/21 职场文书
《中国机长》观后感:敬畏生命,敬畏职责
2019/11/12 职场文书
MySQL REVOKE实现删除用户权限
2021/06/18 MySQL
html中相对位置与绝对位置的具体使用
2022/05/15 HTML / CSS