原生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 相关文章推荐
解析window.open的使用方法总结
Jun 19 Javascript
Egret引擎开发指南之运行项目
Sep 03 Javascript
在for循环中length值是否需要缓存
Jul 27 Javascript
javascript瀑布流布局实现方法详解
Feb 17 Javascript
利用JavaScript如何查询某个值是否数组内
Jul 30 Javascript
Vue常用指令详解分析
Aug 19 Javascript
解决vuecli3.0热更新失效的问题
Sep 19 Javascript
vue项目中axios请求网络接口封装的示例代码
Dec 18 Javascript
详解JavaScript的内存空间、赋值和深浅拷贝
Apr 17 Javascript
layui自定义ajax左侧三级菜单
Jul 26 Javascript
js实现3D照片墙效果
Oct 28 Javascript
在react项目中使用antd的form组件,动态设置input框的值
Oct 24 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
Sony CFR 320 修复改造
2020/03/14 无线电
thinkPHP分组后模板无法加载问题解决方法
2016/07/12 PHP
php array_values 返回数组的所有值详解及实例
2016/11/12 PHP
JQuery Tips(3) 关于$()包装集内元素的改变
2009/12/14 Javascript
jquery 日期分离成年月日的代码
2010/05/14 Javascript
8款非常棒的响应式jQuery 幻灯片插件推荐
2012/02/02 Javascript
为EasyUI的Tab标签添加右键菜单的方法
2012/07/14 Javascript
jQuery解决input超多的表单提交
2015/08/10 Javascript
基于javascript实现文字无缝滚动效果
2016/03/22 Javascript
jQuery实现发送验证码并60秒倒计时功能
2016/11/25 Javascript
jquery mobile移动端幻灯片滑动切换效果
2020/04/15 Javascript
Bootstrap 网格系统布局详解
2017/03/19 Javascript
Javascript面试经典套路reduce函数查重
2017/03/23 Javascript
详解webpack自动生成html页面
2017/06/29 Javascript
Vue三种常用传值示例(父传子、子传父、非父子)
2018/07/24 Javascript
深入理解JavaScript 中的执行上下文和执行栈
2018/10/23 Javascript
vue实现点击按钮下载文件功能
2019/10/11 Javascript
微信小程序单选框自定义赋值
2020/05/26 Javascript
Vue实现图书管理小案例
2020/12/03 Vue.js
python中多层嵌套列表的拆分方法
2018/07/02 Python
Python开发虚拟环境使用virtualenvwrapper的搭建步骤教程图解
2018/09/19 Python
Selenium定时刷新网页的实现代码
2018/10/31 Python
python基于C/S模式实现聊天室功能
2019/01/09 Python
Python类的继承用法示例
2019/01/31 Python
Python3实现的判断回文链表算法示例
2019/03/08 Python
基于css3的属性transition制作菜单导航效果
2015/09/01 HTML / CSS
香港永安旅游网:Wing On Travel
2017/04/10 全球购物
巴西箱包、背包、钱包和旅行配件购物网站:Inovathi
2019/12/14 全球购物
俄罗斯香水和化妆品在线商店:Aroma-butik
2020/02/28 全球购物
Orlebar Brown官网:设计师泳裤和泳装
2020/12/08 全球购物
前台文员岗位职责
2013/12/28 职场文书
乐观大学生的自我评价
2014/01/10 职场文书
教师新年寄语
2014/04/03 职场文书
员工三分钟演讲稿
2014/08/19 职场文书
自愿离婚协议书范本
2014/09/13 职场文书
党员转正意见怎么写
2015/06/03 职场文书