原生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 相关文章推荐
使用prototype.js 的时候应该特别注意的几个问题.
Apr 12 Javascript
jQuery实现dialog设置focus焦点的方法
Jun 10 Javascript
充分发挥Node.js程序性能的一些方法介绍
Jun 23 Javascript
逻辑表达式中与或非的用法详解
Jun 06 Javascript
jQuery on()方法绑定动态元素的点击事件无响应的解决办法
Jul 07 Javascript
老生常谈js-react组件生命周期
May 02 Javascript
vue项目中使用tinymce编辑器的步骤详解
Sep 11 Javascript
小程序实现短信登录倒计时
Jul 12 Javascript
js中!和!!的区别与用法
May 09 Javascript
vue 使用async写数字动态加载效果案例
Jul 18 Javascript
vue 子组件和父组件传值的示例
Sep 11 Javascript
Vue常用API、高级API的相关总结
Feb 02 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 VS ASP
2006/10/09 PHP
php 中的4种标记风格介绍
2012/05/10 PHP
对于ThinkPHP框架早期版本的一个SQL注入漏洞详细分析
2014/07/04 PHP
Fedora下安装php Redis扩展笔记
2014/09/03 PHP
Docker配置PHP开发环境教程
2016/12/21 PHP
Aster vs KG BO3 第三场2.19
2021/03/10 DOTA
EXTJS记事本 当CompositeField遇上RowEditor
2011/07/31 Javascript
jQuery中使用data()方法读取HTML5自定义属性data-*实例
2014/04/11 Javascript
js实现的早期滑动门菜单效果代码
2015/08/27 Javascript
jQuery实现鼠标经过事件的延时处理效果
2020/08/20 Javascript
jQuery手动点击实现图片轮播特效
2020/04/20 Javascript
利用Node.js编写跨平台的spawn语句详解
2017/02/12 Javascript
正则 js分转元带千分符号详解
2017/03/08 Javascript
Bootstrap弹出框(Popover)被挤压的问题小结
2017/07/11 Javascript
Vue.js与 ASP.NET Core 服务端渲染功能整合
2017/11/16 Javascript
JS中数组与对象的遍历方法实例小结
2018/08/14 Javascript
Bootbox将后台JSON数据填充Form表单的实例代码
2018/09/10 Javascript
微信小程序开发(二):页面跳转并传参操作示例
2020/06/01 Javascript
[43:24]VG vs Serenity 2018国际邀请赛小组赛BO2 第二场 8.17
2018/08/20 DOTA
详解字典树Trie结构及其Python代码实现
2016/06/03 Python
linux安装python修改默认python版本方法
2019/03/31 Python
使用Python操作FTP实现上传和下载的方法
2019/04/01 Python
python交互模式下输入换行/输入多行命令的方法
2019/07/02 Python
python实现批量修改服务器密码的方法
2019/08/13 Python
Python 实现大整数乘法算法的示例代码
2019/09/17 Python
Python的赋值、深拷贝与浅拷贝的区别详解
2020/02/12 Python
php优化查询foreach代码实例讲解
2021/03/24 PHP
中专自荐信
2013/10/13 职场文书
优秀学生干部推荐材料
2014/02/03 职场文书
婚纱摄影师求职信范文
2014/04/17 职场文书
应届毕业生求职信范文
2014/05/08 职场文书
治庸问责心得体会
2014/09/12 职场文书
2015年为民办实事工作总结
2015/05/26 职场文书
python树莓派通过队列实现进程交互的程序分析
2021/07/04 Python
前端canvas中物体边框和控制点的实现示例
2022/08/05 Javascript
Mybatis 一级缓存和二级缓存原理区别
2022/09/23 Java/Android