JS实现简单省市二级联动


Posted in Javascript onNovember 27, 2019

刚始学习java刚好看到用js实现省市二级联动的效果,就想着写篇博客,顺便检验下自己的学习成果。

好了废话少说先看看实际效果:

JS实现简单省市二级联动

技术分析:

要实现这个功能呢,首先要用到html+js

这里用建一个下拉列表,绑定onchange事件

<select onchange="changeCity(this.value)">
 <option>--请选择--</option>
 <option value="0">湖北</option>
 <option value="1">湖南</option>
 <option value="2">河北</option>
 <option value="3">河南</option>
 </select>
 <select id="city">
 
</select>

好了下面是script部分了

<script>
 //1.创建一个二维数组用于存储省份和城市
 var cities = new Array(3);
 cities[0] = new Array("武汉市","黄冈市","襄阳市","荆州市");
 cities[1] = new Array("长沙市","郴州市","株洲市","岳阳市");
 cities[2] = new Array("石家庄市","邯郸市","廊坊市","保定市");
 cities[3] = new Array("郑州市","洛阳市","开封市","安阳市");
 
 function changeCity(val){
 
 //7.获取第二个下拉列表
 var c=document.getElementById("city");
 
 //9.清空第二个下拉列表的option内容
 c.options.length=0;
 
 //2.遍历二维数组中的省份
 for(var i=0;i<cities.length;i++){
 //注意,比较的是角标
 if(val==i){
 //3.遍历用户选择的省份下的城市
 for(var j=0;j<cities[i].length;j++){
 //alert(cities[i][j]);
 //4.创建城市的文本节点
 var a = document.createTextNode(cities[i][j]);
 //5.创建option元素节点
 var b = document.createElement("option");
 //6.将城市的文本节点添加到option元素节点
 b.appendChild(a);
 //8.将option元素节点添加到第二个下拉列表中去
 c.appendChild(b);
 }
 }
 }
 }
</script>

这样这个简单的省市二级联动就完成了,是不是特别简单呢?本人因为偷懒所以只写了四个省市,如果想完善点可以自己添加省市哦。

小编再为大家分享一位网友分享的一段代码:原生js实现省市二级联动,再此谢谢作者的分享。

通过document.createElement()创建option选项,再遍历数组appendChild到select对象内,三级联动就是用三位数组和嵌套遍历来实现。

<!DOCTYPE html>
<html>
 <head>
 <meta charset="UTF-8">
 <title>js省市二级联动</title>
 </head>
 <body>
 <form name="aform" method="get" action="#">
 省份:<select id="province" name="province" onchange="changeProvince(this.selectedIndex)"></select>
 城市:<select id="city" name="city"></select>
 </form>
 </body>
</html>

<script type="text/javascript">
 var provinces=["请选择省份","北京市","天津市","上海市","重庆市","江苏省","浙江省","江西省","海南省"];
 var citys=[
 ["请选择城市"],
 ["北京市"],
 ["天津市"],
 ["上海市"],
 ["重庆市"],
 ["南京市","无锡市","徐州市","常州市","苏州市","南通市","连云港市","淮安市","盐城市","扬州市","镇江市","泰州市","宿迁市"],
 ["杭州市","宁波市","温州市","绍兴市","湖州市","嘉兴市","金华市","衢州市","台州市","丽水市","舟山"],
 ["南昌市","九江市","上饶市","抚州市","宜春市","吉安市","赣州市","景德镇","萍乡市","新余市","鹰潭市"],
 ["海口市","三亚市","三沙市","儋州市"]
 ];
 window.onload=function(){
 var province=document.getElementById("province");
 var city=document.getElementById("city");
 var index=0;
 //创建好后加入到列表中
 for(var i in provinces)
 {
 var option = document.createElement("option");
 option.text=provinces[i];
 option.value=provinces[i];
 province.appendChild(option);
 }
 var option = document.createElement("option");
 option.text=citys[index];
 option.value=citys[index];
 city.appendChild(option);
 }
 
 function changeProvince(selectedIndex){
 var city=document.getElementById("city");
 city.options.length=0;
 for(var i in citys[selectedIndex])
 {
 var option = document.createElement("option");
 option.text=citys[selectedIndex][i];
 option.value=citys[selectedIndex][i];
 city.appendChild(option);
 }
 
 }
</script>

更多关于菜单文章的精彩内容请点击专题:Javascript级联菜单特效汇总

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

Javascript 相关文章推荐
Mootools 1.2教程 Fx.Tween的使用
Sep 15 Javascript
JavaScript Cookie显示用户上次访问的时间和次数
Dec 08 Javascript
js 采用delete实现继承示例代码
May 20 Javascript
java和javascript获取word文档的书签位置对比
Jun 19 Javascript
JavaScript使用二分查找算法在数组中查找数据的方法
Apr 07 Javascript
JavaScript运算符小结
Jun 03 Javascript
深入理解JS DOM事件机制
Aug 06 Javascript
基于JavaScript实现的希尔排序算法分析
Apr 14 Javascript
webpack 插件html-webpack-plugin的具体使用
Apr 09 Javascript
微信小程序实现红包功能(后端PHP实现逻辑)
Jul 11 Javascript
vue组件讲解(is属性的用法)模板标签替换操作
Sep 04 Javascript
js面向对象封装级联下拉菜单列表的实现步骤
Feb 08 Javascript
Angular value与ngValue区别详解
Nov 27 #Javascript
原生js实现二级联动菜单
Nov 27 #Javascript
微信小程序wxml列表渲染原理解析
Nov 27 #Javascript
原生js实现下拉选项卡
Nov 27 #Javascript
浅析Vue下的components模板使用及应用
Nov 27 #Javascript
d3.js 地铁轨道交通项目实战
Nov 27 #Javascript
微信小程序表单验证WxValidate的使用
Nov 27 #Javascript
You might like
php 常用类整理
2009/12/23 PHP
解析php DOMElement 操作xml 文档的实现代码
2013/05/10 PHP
PHP如何利用P3P实现跨域
2013/08/24 PHP
PHP购物车类Cart.class.php定义与用法示例
2016/07/20 PHP
ThinkPHP 3.2.3实现页面静态化功能的方法详解
2017/08/03 PHP
CI框架(CodeIgniter)操作redis的方法详解
2018/01/25 PHP
JavaScript是否可实现多线程  深入理解JavaScript定时机制
2009/12/22 Javascript
跨浏览器开发经验总结(四) 怎么写入剪贴板
2010/05/13 Javascript
js判断数据类型如判断是否为数组是否为字符串等等
2014/01/15 Javascript
jQuery中多个元素的Hover事件解决方案
2014/06/12 Javascript
JavaScript实现点击文字切换登录窗口的方法
2015/05/11 Javascript
jquery实现文本框textarea自适应高度
2016/03/09 Javascript
利用纯Vue.js构建Bootstrap组件
2016/11/03 Javascript
深入理解JS继承和原型链的问题
2016/12/17 Javascript
javascript深拷贝的原理与实现方法分析
2017/04/10 Javascript
js 用于检测类数组对象的函数方法
2017/05/02 Javascript
JavaScript实现body内任意节点的自定义属性功能示例
2017/09/18 Javascript
Vue一次性简洁明了引入所有公共组件的方法
2018/11/28 Javascript
Node.js实现简单的爬取的示例代码
2019/06/25 Javascript
[01:03:54]Liquid vs IG 2018国际邀请赛小组赛BO2 第一场 8.17
2018/08/18 DOTA
实例讲解python函数式编程
2014/06/09 Python
tensorflow识别自己手写数字
2018/03/14 Python
Python基于多线程操作数据库相关问题分析
2018/07/11 Python
python 图片二值化处理(处理后为纯黑白的图片)
2019/11/01 Python
Python ATM功能实现代码实例
2020/03/19 Python
Python多线程:主线程等待所有子线程结束代码
2020/04/25 Python
Python 跨.py文件调用自定义函数说明
2020/06/01 Python
垃圾回收的优点和原理
2014/05/16 面试题
PyQt 如何创建自定义QWidget
2021/03/24 Python
货代行业个人求职简历的自我评价
2013/10/22 职场文书
党员创先争优公开承诺书
2014/03/28 职场文书
十佳党员事迹材料
2014/08/28 职场文书
2014个人反腐倡廉思想汇报
2014/09/15 职场文书
努力工作保证书
2015/02/28 职场文书
刑事附带民事代理词
2015/05/25 职场文书
Apache Hudi数据布局黑科技降低一半查询时间
2022/03/31 Servers