原生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 相关文章推荐
设为首页和收藏的Javascript代码(亲测兼容IE,Firefox,chrome等浏览器)
Nov 18 Javascript
浅析offsetLeft,Left,clientLeft之间的区别
Nov 30 Javascript
Javascript中的String对象详谈
Mar 03 Javascript
js获取checkbox复选框选中的选项实例
Aug 24 Javascript
node.js中的fs.chown方法使用说明
Dec 16 Javascript
详解使用grunt完成requirejs的合并压缩和js文件的版本控制
Mar 02 Javascript
node文件批量重命名的方法示例
Oct 23 Javascript
浅谈vue引入css,less遇到的坑和解决方法
Jan 20 Javascript
Vue递归实现树形菜单方法实例
Nov 06 Javascript
JS双向链表实现与使用方法示例(增加一个previous属性实现)
Jan 31 Javascript
Vee-validate 父组件获取子组件表单校验结果的实例代码
May 20 Javascript
在 Vue 中使用 JSX 及使用它的原因浅析
Feb 10 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操作MongoDB时的整数问题及对策说明
2011/05/02 PHP
PHP中使用mktime获取时间戳的一个黑色幽默分析
2012/05/31 PHP
请离开include_once和require_once
2013/07/18 PHP
PHP操作MongoDB实现增删改查功能【附php7操作MongoDB方法】
2018/04/24 PHP
JS 自动完成 AutoComplete(Ajax 查询)
2009/07/07 Javascript
Mootools 1.2教程 设置和获取样式表属性
2009/09/15 Javascript
js或css文件后面跟参数的原因说明
2010/01/09 Javascript
JQuery 构建客户/服务分离的链接模型中Table分页代码效率初探
2010/01/22 Javascript
JS 添加千分位与去掉千分位的示例
2013/07/11 Javascript
Javascript setInterval的两种调用方法(实例讲解)
2013/11/29 Javascript
通过$(this)使用jQuery包装后的方法或属性
2014/05/18 Javascript
JavaScript计算两个日期时间段内日期的方法
2015/03/16 Javascript
bootstrap导航条实现代码
2016/12/28 Javascript
boostrapTable的refresh和refreshOptions区别浅析
2017/01/22 Javascript
解决OneThink中无法异步提交kindeditor文本框中修改后的内容方法
2017/05/05 Javascript
Angular 2父子组件数据传递之@ViewChild获取子组件详解
2017/07/04 Javascript
AngularJS表单验证功能
2017/10/19 Javascript
JavaScript中filter的用法实例分析
2019/02/27 Javascript
VUE Elemen-ui之穿梭框使用方法详解
2021/01/19 Javascript
Python高效编程技巧
2013/01/07 Python
Python编程实现二叉树及七种遍历方法详解
2017/06/02 Python
python 3.5实现检测路由器流量并写入txt的方法实例
2017/12/17 Python
浅谈Python2、Python3相对路径、绝对路径导入方法
2018/06/22 Python
python实现字符串和字典的转换
2018/09/29 Python
基于树莓派的语音对话机器人
2019/06/17 Python
Python 使用 PyMysql、DBUtils 创建连接池提升性能
2019/08/14 Python
python turtle工具绘制四叶草的实例分享
2020/02/14 Python
使用wxpy实现自动发送微信消息功能
2020/02/28 Python
CSS3圆角边框和边界图片效果实例
2016/07/01 HTML / CSS
温馨提示标语
2014/06/26 职场文书
体育专业大学生职业生涯规划范文:打造自己的运动帝国
2014/09/12 职场文书
2014年企业党建工作总结
2014/12/18 职场文书
物业工程部经理岗位职责
2015/04/09 职场文书
煤矿百日安全活动总结
2015/05/07 职场文书
三好学生竞选稿
2015/11/21 职场文书
2016年教师节特级教师获奖感言
2015/12/09 职场文书