原生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 继承机制实例
Aug 12 Javascript
JavaScript的public、private和privileged模式
Dec 28 Javascript
兼容ie、firefox的图片自动缩放的css跟js代码分享
Jan 21 Javascript
全面解析Bootstrap手风琴效果
Apr 17 Javascript
AngularJS实现一次监听多个值发生的变化
Aug 31 Javascript
JS实现字符串转驼峰格式的方法
Dec 16 Javascript
详解前端自动化工具gulp自动添加版本号
Dec 20 Javascript
JavaScript中最常见的三个面试题解析
Mar 04 Javascript
微信小程序地图(map)组件点击(tap)获取经纬度的方法
Jan 10 Javascript
「中高级前端面试」JavaScript手写代码无敌秘籍(推荐)
Apr 08 Javascript
js实现for循环跳过undefined值示例
Jul 02 Javascript
JS轻量级函数式编程实现XDM二
Jun 16 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环境配置 php5 MySQL5 apache2 phpmyadmin安装与配置图文教程
2007/03/16 PHP
PHP缩略图等比例无损压缩,可填充空白区域补充色
2011/06/10 PHP
PHP模拟QQ登录的方法
2015/07/29 PHP
无需数据库在线投票调查php代码
2016/07/20 PHP
php集成动态口令认证
2016/07/21 PHP
JavaScript DOM 学习第五章 表单简介
2010/02/19 Javascript
使用纯javascript实现放大镜效果
2015/03/18 Javascript
jQuery实现鼠标经过弹出提示信息的地图热点效果
2015/08/07 Javascript
全面理解JavaScript中的闭包
2016/05/12 Javascript
浅谈JavaScript 执行环境、作用域及垃圾回收
2016/05/31 Javascript
通过原生JS实现为元素添加事件的方法
2016/11/23 Javascript
在JS中a标签加入单击事件屏蔽href跳转页面
2016/12/16 Javascript
JS简单封装的图片无缝滚动效果示例【测试可用】
2017/03/22 Javascript
解决easyui日期时间框ie的兼容的问题
2018/03/01 Javascript
JavaScript文本特效实例小结【3个示例】
2018/12/22 Javascript
JavaScript递归函数定义与用法实例分析
2019/01/24 Javascript
node.js express框架简介与实现
2019/07/23 Javascript
Angular封装表单控件及思想总结
2019/12/11 Javascript
Vue前端项目部署IIS的实现
2020/01/06 Javascript
vue-cli3.0实现一个多页面应用的历奇经历记录总结
2020/03/16 Javascript
原生JS实现天气预报
2020/06/16 Javascript
基于原生js实现判断元素是否有指定class名
2020/07/11 Javascript
对Python 网络设备巡检脚本的实例讲解
2018/04/22 Python
python 获取微信好友列表的方法(微信web)
2019/02/21 Python
Python进阶之使用selenium爬取淘宝商品信息功能示例
2019/09/16 Python
python TK库简单应用(实时显示子进程输出)
2019/10/29 Python
Python selenium模拟手动操作实现无人值守刷积分功能
2020/05/13 Python
python新手学习可变和不可变对象
2020/06/11 Python
html5新特性与用法大全
2018/09/13 HTML / CSS
美国最大的团购网站:Groupon
2016/07/23 全球购物
英国知名化妆品网站:Revolution Beauty(原TAM Beauty)
2018/02/28 全球购物
英国100%防污和防水的靴子:Muck Boot Company
2020/09/08 全球购物
学习两会精神心得范文
2014/03/17 职场文书
中学清明节活动总结
2014/07/04 职场文书
党员转正申请报告
2015/05/15 职场文书
Java实现学生管理系统(IO版)
2022/02/24 Java/Android