原生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 相关文章推荐
dreamweaver 安装Jquery智能提示
Apr 02 Javascript
javascript中注册和移除事件的4种方式
Mar 20 Javascript
JavaScript常用全局属性与方法记录积累
Jul 03 Javascript
javascript的内存管理详解
Aug 07 Javascript
JavaScript中Math对象方法使用概述
Jan 02 Javascript
调试代码导致IE出错的避免方法
Apr 04 Javascript
jQuery选择器简明总结(含用法实例,一目了然)
Apr 25 Javascript
JavaScript中判断函数、变量是否存在
Jun 10 Javascript
JavaScript取得WEB安全颜色列表的方法
Jul 14 Javascript
javascript页面倒计时实例
Jul 25 Javascript
js淡入淡出的图片轮播效果代码分享
Aug 24 Javascript
Bootstrap实现带暂停功能的轮播组件(推荐)
Nov 25 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
无刷新动态加载数据 滚动条加载适合评论等页面
2013/10/16 PHP
PHP编程基本语法快速入门手册
2016/01/07 PHP
PHP进程通信基础之信号量与共享内存通信
2017/02/19 PHP
PhpStorm 如何优雅的调试Hyperf的方法步骤
2019/11/24 PHP
php post换行的方法
2020/02/03 PHP
做网页的一些技巧(续)
2007/02/01 Javascript
JavaScript 解析Json字符串的性能比较分析代码
2009/12/16 Javascript
jquery判断字符输入个数(数字英文长度记为1,中文记为2,超过长度自动截取)
2010/10/15 Javascript
jquery slibings选取同级其他元素的实现代码
2013/11/15 Javascript
基于jquery实现简单的分页控件
2016/03/17 Javascript
Bootstrap Paginator分页插件使用方法详解
2016/05/30 Javascript
JavaScript进阶练习及简单实例分析
2016/06/03 Javascript
jQuery EasyUI 获取tabs的实例解析
2016/12/06 Javascript
angular4 如何在全局设置路由跳转动画的方法
2017/08/30 Javascript
详解vue mixins和extends的巧妙用法
2017/12/20 Javascript
JavaScript设计模式之模板方法模式原理与用法示例
2018/08/07 Javascript
浅谈VueJS SSR 后端绘制内存泄漏的相关解决经验
2018/12/20 Javascript
bootstrap table.js动态填充单元格数据的多种方法
2019/07/18 Javascript
Webpack中loader打包各种文件的方法实例
2019/09/03 Javascript
layui 表格操作列按钮动态显示的实现方法
2019/09/06 Javascript
解决使用layui的时候form表单中的select等不能渲染的问题
2019/09/18 Javascript
vuex的数据渲染与修改浅析
2020/11/26 Vue.js
ubuntu中配置pyqt4环境教程
2017/12/27 Python
python Socket网络编程实现C/S模式和P2P
2020/06/22 Python
python 生成正态分布数据,并绘图和解析
2020/12/21 Python
html5的websockets全双工通信详解学习示例
2014/02/26 HTML / CSS
Algenist奥杰尼官网:微藻抗衰老护肤品牌
2017/07/15 全球购物
为什么需要版本控制
2016/10/28 面试题
大学生物业管理求职信
2013/10/24 职场文书
创新比赛获奖感言
2014/02/13 职场文书
小学生作文评语
2014/04/18 职场文书
企业领导对照检查材料
2014/08/20 职场文书
中秋节国旗下演讲稿
2014/09/05 职场文书
模范班主任事迹材料
2014/12/17 职场文书
《攀登者》:“海拔8000米以上,你不能指望任何人”
2019/11/25 职场文书
Python实战之OpenCV实现猫脸检测
2021/06/26 Python