原生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 相关文章推荐
使用ajaxfileupload.js实现ajax上传文件php版
Jun 26 Javascript
javascript实现动态表头及表列的展现方法
Jul 14 Javascript
JavaScript中var关键字的使用详解
Aug 14 Javascript
Vue.js组件tabs实现选项卡切换效果
Dec 01 Javascript
javascript和jQuery中的AJAX技术详解【包含AJAX各种跨域技术】
Dec 15 Javascript
javascript实现滑动解锁功能
Mar 22 Javascript
JS实现根据详细地址获取经纬度功能示例
Apr 16 Javascript
JS计算两个数组的交集、差集、并集、补集(多种实现方式)
May 21 Javascript
js实现时钟定时器
Mar 26 Javascript
使用eslint和githooks统一前端风格的技巧
Jul 29 Javascript
Vue + ts实现轮播插件的示例
Nov 10 Javascript
vue+element table表格实现动态列筛选的示例代码
Jan 14 Vue.js
原生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实现用户认证及管理完全源码
2007/03/11 PHP
php实现根据url自动生成缩略图的方法
2014/09/23 PHP
PHP代码判断设备是手机还是平板电脑(两种方法)
2015/10/19 PHP
[原创]CI(CodeIgniter)简单统计访问人数实现方法
2016/01/19 PHP
php计算给定日期所在周的开始日期和结束日期示例
2017/02/06 PHP
PHP编程实现多维数组按照某个键值排序的方法小结【2种方法】
2017/04/27 PHP
Jquery图片滚动与幻灯片的实例代码
2013/04/08 Javascript
jQuery 仿百度输入标签插件附效果图
2014/07/04 Javascript
JavaScript控制两个列表框listbox左右交换数据的方法
2015/03/18 Javascript
JS判断图片是否加载完成方法汇总(最新版)
2016/05/13 Javascript
a标签置灰不可点击的实现方法
2017/02/06 Javascript
Node.js静态服务器的实现方法
2018/02/28 Javascript
如何写好一个vue组件,老夫的一年经验全在这了(推荐)
2019/05/18 Javascript
微信小程序蓝牙连接小票打印机实例代码详解
2019/06/03 Javascript
微信公众号平台接口开发 获取access_token过程解析
2019/08/14 Javascript
微信小程序中插入激励视频广告并获取收益(实例代码)
2019/12/06 Javascript
JavaScript位置参数实现原理及过程解析
2020/09/14 Javascript
js实现移动端轮播图滑动切换
2020/12/21 Javascript
[30:37]【全国守擂赛】第三周擂主赛 Dark Knight vs. Leopard Gaming
2020/05/04 DOTA
简单介绍Ruby中的CGI编程
2015/04/10 Python
Django返回json数据用法示例
2016/09/18 Python
python和opencv实现抠图
2018/07/18 Python
python三引号输出方法
2019/02/27 Python
Python的Tkinter点击按钮触发事件的例子
2019/07/19 Python
django实现web接口 python3模拟Post请求方式
2019/11/19 Python
PyCharm设置Ipython交互环境和宏快捷键进行数据分析图文详解
2020/04/23 Python
Django静态文件加载失败解决方案
2020/08/26 Python
css3实例教程 一款纯css3实现的发光屏幕旋转特效
2014/12/07 HTML / CSS
css3进阶之less实现星空动画的示例代码
2019/09/10 HTML / CSS
AC Lens:购买隐形眼镜
2017/02/26 全球购物
墨西哥皇宫度假村预订:Palace Resorts
2018/06/16 全球购物
莫言诺贝尔获奖演讲稿
2014/05/21 职场文书
2014社区健康教育工作总结
2014/12/16 职场文书
2014年仓库管理工作总结
2014/12/17 职场文书
骨干教师考核评语
2014/12/31 职场文书
2016年教师党员承诺书范文
2016/03/24 职场文书