原生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延迟加载
Mar 09 Javascript
JScript中的undefined和&quot;undefined&quot;的区别
Mar 08 Javascript
js直接编辑当前cookie的脚本
Sep 14 Javascript
基于jQuery的淡入淡出可自动切换的幻灯插件
Aug 24 Javascript
js判断数据类型如判断是否为数组是否为字符串等等
Jan 15 Javascript
详解angular中的作用域及继承
May 31 Javascript
sublime text配置node.js调试(图文教程)
Nov 23 Javascript
Vue结合Video.js播放m3u8视频流的方法示例
May 04 Javascript
js中Generator函数的深入讲解
Apr 07 Javascript
Vue CLI3创建项目部署到Tomcat 使用ngrok映射到外网
May 16 Javascript
详解js创建对象的几种方式和对象方法
Mar 01 Javascript
Vue中Object.assign清空数据报错的解决方案
Mar 03 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
$_GET['goods_id']+0 的使用详解
2013/06/06 PHP
ThinkPHP的截取字符串函数无法显示省略号的解决方法
2014/06/25 PHP
PHP远程调试之XDEBUG
2015/12/29 PHP
微信 getAccessToken方法详解及实例
2016/11/23 PHP
PHP实现中国公民身份证号码有效性验证示例代码
2017/05/03 PHP
Open and Print a Word Document
2007/06/15 Javascript
js动态设置div的值下例子
2013/10/29 Javascript
javascript中文本框中输入法切换的问题
2013/12/10 Javascript
javascript原始值和对象引用实例分析
2015/04/25 Javascript
AngularJS入门教程中SQL实例详解
2016/07/27 Javascript
angularjs 实现带查找筛选功能的select下拉框实例
2017/01/11 Javascript
jquery表单插件form使用方法详解
2017/01/20 Javascript
ionic2 tabs 图标自定义实例
2017/03/08 Javascript
基于vue展开收起动画的示例代码
2018/07/05 Javascript
Vue运用transition实现过渡动画
2019/05/06 Javascript
jQuery Migrate 插件用法实例详解
2019/05/22 jQuery
实现vuex与组件data之间的数据同步更新方式
2019/11/12 Javascript
基于vue 动态菜单 刷新空白问题的解决
2020/08/06 Javascript
[51:20]完美世界DOTA2联赛PWL S2 Magma vs PXG 第一场 11.28
2020/12/01 DOTA
跟老齐学Python之玩转字符串(2)更新篇
2014/09/28 Python
元组列表字典(莫烦python基础)
2019/04/03 Python
Pandas之DataFrame对象的列和索引之间的转化
2019/06/25 Python
python实现拉普拉斯特征图降维示例
2019/11/25 Python
tensorflow实现tensor中满足某一条件的数值取出组成新的tensor
2020/01/04 Python
Python装饰器实现方法及应用场景详解
2020/03/26 Python
Python第三方包之DingDingBot钉钉机器人
2020/04/09 Python
Jacadi Paris美国官方网站:法国童装品牌
2017/10/15 全球购物
Merrell美国官网:美国登山运动鞋品牌
2018/02/07 全球购物
TCP/IP中的TCP和IP分别承担什么责任
2012/04/21 面试题
交通安全教育制度
2014/02/02 职场文书
求职信的正确写法
2014/07/10 职场文书
个人四风对照检查材料
2014/09/26 职场文书
学习党的群众路线教育实践活动心得体会范文
2014/11/03 职场文书
岁月神偷观后感
2015/06/11 职场文书
返乡农民工证明
2015/06/24 职场文书
CSS3 制作精美的定价表
2021/04/06 HTML / CSS