原生JavaScript实现的简单省市县三级联动功能示例


Posted in Javascript onMay 27, 2017

本文实例讲述了原生JavaScript实现的简单省市县三级联动功能。分享给大家供大家参考,具体如下:

三级联动是我们写表单时必不可少的,比如在写收货地址时,就用到他了,最近在看原生JavaScript,从基础写起,待完善,以后再写个jquery版的

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>三级联动菜单</title>
<style>
select {
font-family: "萝莉体 第二版";
}
.hide {
display: none;
}
</style>
</head>
<body>
<div>
<select id="province">
<option>-请选择-</option>
</select>
<select id="city" class="hide">
<option>-请选择-</option>
</select>
<select id="area" class="hide">
<option>-请选择-</option>
</select>
</div>
<script>
var provinceList = ['北京市', '河北省', '浙江省'];
var cityList = [['东城区', '西城区', '海淀区'], ['廊坊市', '唐山市', '石家庄市', '承德市'], ['杭州市', '温州市', '宁波市', '嘉兴市', '绍兴市']];
var areasList = [
[
['东城区1', '东城区2', '东城区3'],
['西城区1', '西城区2', '西城区3'],
['海淀区1', '海淀区2', '海淀区3']
],
[
['廊坊市1', '廊坊市2', '廊坊市3', '廊坊市4'],
['唐山市1', '唐山市2', '唐山市3', '唐山市4'],
['石家庄市1', '石家庄市2', '石家庄市3', '石家庄市4'],
['承德市1', '承德市2', '承德市3', '承德市4']
],
[
['杭州市1', '杭州市2', '杭州市3', '杭州市4', '杭州市5'],
['温州市1', '温州市2', '温州市3', '温州市4', '温州市5'],
['宁波市1', '宁波市2', '宁波市3', '宁波市4', '宁波市5'],
['嘉兴市1', '嘉兴市2', '嘉兴市3', '嘉兴市4', '嘉兴市5'],
['绍兴市1', '绍兴市2', '绍兴市3', '绍兴市4', '绍兴市5']
]
];
//1.获取元素
var province = document.getElementById("province");
var city = document.getElementById("city");
var area = document.getElementById("area");
//2.给省的选择框赋值,
// ----使用自执行函数,避免污染全局变量-----
(function () {
for (var i = 0; i < provinceList.length; i++) {
var myOption = document.createElement("option");
myOption.innerHTML = provinceList[i];
//设置value值
myOption.value = i;
province.appendChild(myOption);
}
})();
//3.设置选择省的行为函数
province.onchange = function (e) {
city.style.display = "inline-block"; //设置第二个出现
while (city.children.length > 1) { //当省设置为“请选择”时,移除子元素
city.removeChild(city.lastElementChild);
}
while (area.children.length > 1) { //当市设置为“请选择”时,移除子元素
area.removeChild(area.lastElementChild);
}
if (cityList[this.value]) {//当设置为请选择时不显示列表
for (var i = 0; i < cityList[this.value].length; i++) { //添加市的列表
var myOption = document.createElement("option");
myOption.innerHTML = cityList[this.value][i];
//设置value值
myOption.value = i;
city.appendChild(myOption);
}
}
};
//4.设置选择市的行为函数
city.onchange = function (e) {
area.style.display = "inline-block"; //设置第二个出现
while (area.children.length > 1) { //当市设置为“请选择”时,移除子元素
area.removeChild(area.lastElementChild);
}
if (areasList[province.value][this.value]) {//当设置为"请选择"时不显示列表
for (var i = 0; i < areasList[province.value][this.value].length; i++) { //添加市的列表
var myOption = document.createElement("option");
myOption.innerHTML = areasList[province.value][this.value][i];
area.appendChild(myOption);
}
}
}
</script>
</body>
</html>

运行效果图如下:

原生JavaScript实现的简单省市县三级联动功能示例

更多关于JavaScript相关内容可查看本站专题:《JavaScript切换特效与技巧总结》、《JavaScript查找算法技巧总结》、《JavaScript动画特效与技巧汇总》、《JavaScript错误与调试技巧总结》、《JavaScript数据结构与算法技巧总结》、《JavaScript遍历算法与技巧总结》及《JavaScript数学运算用法总结》

希望本文所述对大家JavaScript程序设计有所帮助。

Javascript 相关文章推荐
开发 Internet Explorer 右键功能表(ContextMenu)
Jul 03 Javascript
javascript通过navigator.userAgent识别各种浏览器
Oct 25 Javascript
JavaScript获取function所有参数名的方法
Oct 30 Javascript
JS仿hao123导航页面图片轮播效果
Sep 01 Javascript
完美解决js传递参数中加号和&amp;号自动改变的方法
Oct 11 Javascript
jQuery中的deferred使用方法
Mar 27 jQuery
微信小程序request请求后台接口php的实例详解
Sep 20 Javascript
深入理解node.js http模块
Jan 24 Javascript
javascriptvoid(0)含义以及与&quot;#&quot;的区别讲解
Jan 19 Javascript
layui点击左侧导航栏,实现不刷新整个页面,只刷新局部的方法
Sep 25 Javascript
vue+ts下对axios的封装实现
Feb 18 Javascript
基于node+websocket+html实现腾讯课堂聊天室聊天功能
Mar 04 Javascript
原生JavaScript实现精美的淘宝轮播图效果示例【附demo源码下载】
May 27 #Javascript
详细讲解vue2+vuex+axios
May 27 #Javascript
AngularJS获取json数据的方法详解
May 27 #Javascript
vue中用H5实现文件上传的方法实例代码
May 27 #Javascript
详解vue2.0脚手架的webpack 配置文件分析
May 27 #Javascript
详解如何使用webpack打包Vue工程
May 27 #Javascript
Jquery中attr与prop的区别详解
May 27 #jQuery
You might like
PHP 和 XML: 使用expat函数(二)
2006/10/09 PHP
利用PHP制作简单的内容采集器的原理分析
2008/10/01 PHP
php设计模式 FlyWeight (享元模式)
2011/06/26 PHP
php中设置多级目录session的问题
2011/08/08 PHP
php检查页面是否被百度收录
2015/10/28 PHP
php验证邮箱和ip地址最简单方法汇总
2015/10/30 PHP
php实现将HTML页面转换成word并且保存的方法
2016/10/14 PHP
PHP实现网站应用微信登录功能详解
2019/04/11 PHP
利用纯Vue.js构建Bootstrap组件
2016/11/03 Javascript
js中的eval()函数把含有转义字符的字符串转换成Object对象的方法
2016/12/02 Javascript
简单几步实现返回顶部效果
2016/12/05 Javascript
jQuery手指滑动轮播效果
2016/12/22 Javascript
JavaScript用二分法查找数据的实例代码
2017/06/17 Javascript
详谈JS中数组的迭代方法和归并方法
2017/08/11 Javascript
细说webpack源码之compile流程-rules参数处理技巧(2)
2017/12/26 Javascript
Vue中util的工具函数实例详解
2019/07/08 Javascript
react-native聊天室|RN版聊天App仿微信实例|RN仿微信界面
2019/11/12 Javascript
解决Echarts 显示隐藏后宽度高度变小的问题
2020/07/19 Javascript
vant中的toast层级改变操作
2020/11/04 Javascript
[41:56]Spirit vs Liquid Supermajor小组赛A组 BO3 第一场 6.2
2018/06/03 DOTA
Python中的迭代器漫谈
2015/02/03 Python
Python代码解决RenderView窗口not found问题
2016/08/28 Python
python2与python3中关于对NaN类型数据的判断和转换方法
2018/10/30 Python
python实现微信自动回复及批量添加好友功能
2019/07/03 Python
Django实现跨域的2种方法
2019/07/31 Python
通过python 执行 nohup 不生效的解决
2020/04/16 Python
Python列表如何更新值
2020/05/27 Python
通过自学python能找到工作吗
2020/06/21 Python
匡威俄罗斯官网:Converse俄罗斯
2020/05/09 全球购物
升职自荐书范文
2013/11/28 职场文书
英文自荐信
2013/12/19 职场文书
保险公司早会主持词
2014/03/22 职场文书
4s店市场专员岗位职责
2014/04/09 职场文书
婚假请假条格式及范文
2014/04/10 职场文书
《秋游》教学反思
2014/04/24 职场文书
致800米运动员广播稿(10篇)
2014/10/17 职场文书