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 相关文章推荐
javascript引用对象的方法
Jan 11 Javascript
兼容多浏览器的iframe自适应高度(ie8 、谷歌浏览器4.0和 firefox3.5.3)
Nov 04 Javascript
Jquery之美中不足小结
Feb 16 Javascript
jquery中each方法示例和常用选择器
Jul 08 Javascript
jQuery遮罩层实现方法实例详解(附遮罩层插件)
Dec 08 Javascript
javascript每日必学之基础入门
Feb 16 Javascript
javascript 中设置window.location.href跳转无效问题解决办法
Feb 09 Javascript
javascript定时器取消定时器及优化方法
Jul 08 Javascript
js原生日历的实例(推荐)
Oct 31 Javascript
详解使用vue-admin-template的优化历程
May 20 Javascript
Javascript 对象(object)合并操作实例分析
Jul 30 Javascript
微信小程序APP的生命周期及页面的生命周期
Apr 19 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函数和特点
2013/08/08 PHP
叫你如何修改Nginx与PHP的文件上传大小限制
2014/09/10 PHP
PHP打开和关闭文件操作函数总结
2014/11/18 PHP
smarty模板引擎从php中获取数据的方法
2015/01/22 PHP
win7系统配置php+Apache+mysql环境的方法
2015/08/21 PHP
php5.2的curl-bug 服务器被php进程卡死问题排查
2016/09/19 PHP
PHP数组相加操作及与array_merge的区别浅析
2016/11/26 PHP
用YUI做了个标签浏览效果
2007/02/20 Javascript
JavaScript 读取元素的CSS信息的代码
2010/02/07 Javascript
Jquery刷新页面背景图片随机变换的实现方法
2013/03/15 Javascript
javascript setTimeout和setInterval计时的区别详解
2013/06/21 Javascript
jquery实现的一个文章自定义分段显示功能
2014/05/23 Javascript
JS动态修改图片的URL(src)的方法
2015/04/01 Javascript
bootstrap table方法之expandRow-collapseRow展开或关闭当前行数据
2020/08/09 Javascript
JS运动改变单物体透明度的方法分析
2018/01/23 Javascript
Angular4 ElementRef的应用
2018/02/26 Javascript
JavaScript迭代器的含义及用法
2019/06/21 Javascript
vue实现滑动超出指定距离回顶部功能
2019/07/31 Javascript
深入理解webpack process.env.NODE_ENV配置
2020/02/23 Javascript
小程序跳转到的H5页面再跳转回跳小程序的方法
2020/03/06 Javascript
ant design vue中表格指定格式渲染方式
2020/10/28 Javascript
JavaScript实现弹出窗口效果
2020/12/09 Javascript
[01:20]DOTA2 2017国际邀请赛冠军之路无止竞
2017/06/19 DOTA
[46:50]Liquid vs Mineski 2018国际邀请赛小组赛BO2 第二场 8.18
2018/08/19 DOTA
Python中 Lambda表达式全面解析
2016/11/28 Python
Python实现将罗马数字转换成普通阿拉伯数字的方法
2017/04/19 Python
使用OpenCV-python3实现滑动条更新图像的Canny边缘检测功能
2019/12/12 Python
用python实现一个简单的验证码
2020/12/09 Python
【HTML5】Canvas绘制简单图片教程
2016/05/13 HTML / CSS
结婚保证书范文
2014/04/29 职场文书
2014年高校辅导员工作总结
2014/12/09 职场文书
员工评语范文
2014/12/31 职场文书
爱心助学感谢信
2015/01/21 职场文书
2015年护士节慰问信
2015/03/23 职场文书
深入浅析Redis 集群伸缩原理
2021/05/15 Redis
浅谈Python实现opencv之图片色素的数值运算和逻辑运算
2021/06/23 Python