首頁 >web前端 >js教程 >JavaScript原生程式碼實現的簡單省市縣三級連動功能的案例

JavaScript原生程式碼實現的簡單省市縣三級連動功能的案例

黄舟
黄舟原創
2017-05-28 10:25:151547瀏覽

這篇文章主要介紹了原生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