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 相关文章推荐
JQuery 插件模板 制作jquery插件的朋友可以参考下
Mar 17 Javascript
在Ajax中使用Flash实现跨域数据读取的实现方法
Dec 02 Javascript
使用JavaScript构建JSON格式字符串实现步骤
Mar 22 Javascript
php,js,css字符串截取的办法集锦
Sep 26 Javascript
在JavaScript中处理时间之getHours()方法的使用
Jun 10 Javascript
浅谈JS中的bind方法与函数柯里化
Aug 10 Javascript
微信小程序 地图定位简单实例
Oct 14 Javascript
JavaScript之cookie技术详解
Nov 18 Javascript
layer弹出层父子页面事件相互调用方法
Aug 17 Javascript
vue自定义tap指令及tap事件的实现
Sep 18 Javascript
AJAX XMLHttpRequest对象创建使用详解
Aug 20 Javascript
Jquery $.map使用方法实例详解
Sep 01 jQuery
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
javascript some()函数用法详解
2014/11/13 PHP
php+ajax实现无刷新动态加载数据技术
2015/04/28 PHP
php检查函数必传参数是否存在的实例详解
2017/08/28 PHP
小程序微信退款功能实现方法详解【基于thinkPHP】
2019/05/05 PHP
JavaScript replace(rgExp,fn)正则替换的用法
2010/03/04 Javascript
分享一道笔试题[有n个直线最多可以把一个平面分成多少个部分]
2012/10/12 Javascript
下拉菜单点击实现连接跳转功能的js代码
2013/05/19 Javascript
javascript 上下banner替换具体实现
2013/11/14 Javascript
javascript中offset、client、scroll的属性总结
2015/08/13 Javascript
js实现图片放大和拖拽特效代码分享
2015/09/05 Javascript
js实现搜索框关键字智能匹配代码
2020/03/26 Javascript
JavaScript编程学习技巧汇总
2016/02/21 Javascript
jQuery 的 ready()的纯js替代方法
2016/11/20 Javascript
jQuery实现的模拟弹出窗口功能示例
2016/11/24 Javascript
nodejs实现发出蜂鸣声音(系统报警声)的方法
2017/01/18 NodeJs
JavaScript实现瀑布流以及加载效果
2017/02/11 Javascript
react-native 封装选择弹出框示例(试用ios&amp;android)
2017/07/11 Javascript
Mongoose实现虚拟字段查询的方法详解
2017/08/15 Javascript
VUE element-ui 写个复用Table组件的示例代码
2017/11/18 Javascript
vue-awesome-swiper滑块插件使用方法详解
2017/11/27 Javascript
微信小程序实现点击效果
2019/06/21 Javascript
[35:34]Liquid vs Winstrike 2018国际邀请赛小组赛BO2 第一场 8.18
2018/08/19 DOTA
[48:48]VGJ.T vs Liquid 2018国际邀请赛小组赛BO2 第二场 8.19
2018/08/21 DOTA
paramiko模块安装和使用(远程登录服务器)
2014/01/27 Python
python框架django基础指南
2016/09/08 Python
基于django传递数据到后端的例子
2019/08/16 Python
pytorch常见的Tensor类型详解
2020/01/15 Python
Python之字典添加元素的几种方法
2020/09/30 Python
无需JS和jQuery代码实现CSS3鼠标浮动放大图片
2016/11/21 HTML / CSS
利用Node实现HTML5离线存储的方法
2020/10/16 HTML / CSS
历史学专业大学生找工作的自我评价
2013/10/16 职场文书
高中军训感言200字
2014/02/23 职场文书
法制教育演讲稿
2014/09/10 职场文书
怎样写辞职信
2015/02/27 职场文书
运动会加油稿30字
2015/07/21 职场文书
pandas 操作 Excel操作总结
2021/03/31 Python