首页  >  文章  >  web前端  >  JavaScript原生代码实现的简单省市县三级联动功能的案例

JavaScript原生代码实现的简单省市县三级联动功能的案例

黄舟
黄舟原创
2017-05-28 10:25:151496浏览

这篇文章主要介绍了原生JavaScript实现的简单省市县三级联动功能,结合完整实例形式分析了javascript联动菜单的实现方法,涉及javascript事件响应及页面元素动态操作相关实现技巧,需要的朋友可以参考下

本文实例讲述了原生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>
<p>
<select id="province">
<option>-请选择-</option>
</select>
<select id="city" class="hide">
<option>-请选择-</option>
</select>
<select id="area" class="hide">
<option>-请选择-</option>
</select>
</p>
<script>
var provinceList = [&#39;北京市&#39;, &#39;河北省&#39;, &#39;浙江省&#39;];
var cityList = [[&#39;东城区&#39;, &#39;西城区&#39;, &#39;海淀区&#39;], [&#39;廊坊市&#39;, &#39;唐山市&#39;, &#39;石家庄市&#39;, &#39;承德市&#39;], [&#39;杭州市&#39;, &#39;温州市&#39;, &#39;宁波市&#39;, &#39;嘉兴市&#39;, &#39;绍兴市&#39;]];
var areasList = [
[
[&#39;东城区1&#39;, &#39;东城区2&#39;, &#39;东城区3&#39;],
[&#39;西城区1&#39;, &#39;西城区2&#39;, &#39;西城区3&#39;],
[&#39;海淀区1&#39;, &#39;海淀区2&#39;, &#39;海淀区3&#39;]
],
[
[&#39;廊坊市1&#39;, &#39;廊坊市2&#39;, &#39;廊坊市3&#39;, &#39;廊坊市4&#39;],
[&#39;唐山市1&#39;, &#39;唐山市2&#39;, &#39;唐山市3&#39;, &#39;唐山市4&#39;],
[&#39;石家庄市1&#39;, &#39;石家庄市2&#39;, &#39;石家庄市3&#39;, &#39;石家庄市4&#39;],
[&#39;承德市1&#39;, &#39;承德市2&#39;, &#39;承德市3&#39;, &#39;承德市4&#39;]
],
[
[&#39;杭州市1&#39;, &#39;杭州市2&#39;, &#39;杭州市3&#39;, &#39;杭州市4&#39;, &#39;杭州市5&#39;],
[&#39;温州市1&#39;, &#39;温州市2&#39;, &#39;温州市3&#39;, &#39;温州市4&#39;, &#39;温州市5&#39;],
[&#39;宁波市1&#39;, &#39;宁波市2&#39;, &#39;宁波市3&#39;, &#39;宁波市4&#39;, &#39;宁波市5&#39;],
[&#39;嘉兴市1&#39;, &#39;嘉兴市2&#39;, &#39;嘉兴市3&#39;, &#39;嘉兴市4&#39;, &#39;嘉兴市5&#39;],
[&#39;绍兴市1&#39;, &#39;绍兴市2&#39;, &#39;绍兴市3&#39;, &#39;绍兴市4&#39;, &#39;绍兴市5&#39;]
]
];
//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原生代码实现的简单省市县三级联动功能的案例的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn