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 事件参考手册
Dec 24 Javascript
Jquery Ajax请求代码(2)
Jan 07 Javascript
jquery高级编程的最佳实践详解
Mar 23 Javascript
jQuery+css实现的换页标签栏效果
Jan 27 Javascript
vue.js入门教程之基础语法小结
Sep 01 Javascript
微信小程序 实现点击添加移除class
Jun 12 Javascript
javascript修改浏览器title方法 JS动态修改浏览器标题
Nov 30 Javascript
javaScript日期工具类DateUtils详解
Dec 08 Javascript
Bootstrap实现可折叠分组侧边导航菜单
Mar 07 Javascript
详解React项目中碰到的IE问题
Mar 14 Javascript
javascript使用链接跨域下载图片
Nov 01 Javascript
Vue-CLI 3 scp2自动部署项目至服务器的方法
Jul 24 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创建、获取cookie及基础要点分析
2015/01/26 PHP
php四种定界符详解
2017/02/16 PHP
Smarty3配置及入门语法
2017/02/22 PHP
关于php支持的协议与封装协议总结(推荐)
2017/11/17 PHP
javascript 写类方式之五
2009/07/05 Javascript
表格单元格交错着色实现思路及代码
2013/04/01 Javascript
js控制不同的时间段显示不同的css样式的实例代码
2013/11/04 Javascript
JavaScript使用ActiveXObject访问Access和SQL Server数据库
2015/04/02 Javascript
JS中mouseover和mouseout多次触发问题如何解决
2016/06/06 Javascript
JS实现数组去重复值的方法示例
2017/02/18 Javascript
详解tween.js 中文使用指南
2018/01/05 Javascript
react中fetch之cors跨域请求的实现方法
2018/03/14 Javascript
echarts统计x轴区间的数值实例代码详解
2019/07/07 Javascript
解决vue+ element ui 表单验证有值但验证失败问题
2020/01/16 Javascript
在VUE中使用lodash的debounce和throttle操作
2020/11/09 Javascript
python模拟登录百度贴吧(百度贴吧登录)实例
2013/12/18 Python
python重试装饰器示例
2014/02/11 Python
Python解析并读取PDF文件内容的方法
2018/05/08 Python
详解pandas中MultiIndex和对象实际索引不一致问题
2019/07/23 Python
详解用Python为直方图绘制拟合曲线的两种方法
2019/08/21 Python
Python算法的时间复杂度和空间复杂度(实例解析)
2019/11/19 Python
Python selenium自动化测试模型图解
2020/04/15 Python
如何基于Django实现上下文章跳转
2020/09/16 Python
python 6种方法实现单例模式
2020/12/15 Python
CSS3 @font-face属性使用指南
2014/12/12 HTML / CSS
英国儿童鞋和靴子:Start-Rite
2019/05/06 全球购物
简单说说tomcat的配置
2013/05/28 面试题
武汉英思工程科技有限公司&ndash;ORACLE面试测试题目
2012/04/30 面试题
大学生毕业自荐信
2013/10/10 职场文书
土地转让协议书范本
2014/04/15 职场文书
员工生日会策划方案
2014/06/14 职场文书
运动会搞笑广播稿
2014/10/14 职场文书
2014年个人年终总结
2015/03/09 职场文书
小学公民道德宣传日活动总结
2015/03/23 职场文书
Mysql MVCC机制原理详解
2021/04/20 MySQL
VUE中的v-if与v-show区别介绍
2022/03/13 Vue.js