省市区三级联动

一、Demo

<1>.要求

通过三个下拉菜单的联动来实现,
第一级下拉菜单为省级,第二级下拉菜单为市级,第三级下拉菜单为区级。
当点击第一级下拉菜单,第二级菜单的内容会自动匹配;
选择第二级菜单时,第三级菜单会自动生成。当我取消上一级菜单的选项时,次一级选项会自动消失。

<2>.功能

可条理清晰的寻找到想要的省市区

二、实现原理

JS部分,先为省市区添加数组,然后获取对应的省市区数据,并为各自创建新选项,
最后,对数据进行遍历即可

三、代码

<1>.Html部分

<!DOCTYPE html>
<html lang="en">
<head>
     <meta charset="UTF-8">
     <meta http-equiv="X-UA-Compatible" content="IE=edge">
     <meta name="viewport" content="width=device-width, initial-scale=1.0">
 <title>省市区三级联动</title>
 <link rel="stylesheet" href="./index.css">
</head>
<body>
<div>
     省份<select name="" id="province"></select>
     城市<select name="" id="city"></select>
     区域<select name="" id="country"></select>
</div>

 <script src="./index.js"></script>
</body>
</html>

<2>.Css部分


*{
    margin: 0;
    padding: 0;
}
div{
    width: 400px;
    margin: 100px auto;
}
select{
    width: 80px;
    margin: 5px;
}

<3>.Js部分

// 省份数组
var provinceArr = ['山东', '江苏'];
// 城市数组
var cityArr = [
['菏泽', '济南' ],
['无锡', '南京']
];
// 区域数组
var countryArr = [
[
 ['单县','曹县'],
  ['市中区','天桥区']
],
[
 ['梁溪区', '滨湖区'],
 ['雨花台区', '玄武区',],
],
];

window.onload = function(){
var province = document.getElementById('province');  //获取省标
var city = document.getElementById('city');          //获取市标
var country = document.getElementById('country');    //获取区标

createOption(province, provinceArr);        //对省标创建新选项
province.onchange = function(){     //获取对应的省数组
 city.length = 0;
 createOption(city, cityArr[this.selectedIndex]);       //对市标创建新选项
 city.onchange();
}

city.onchange = function(){      //获取对应的省数组
 country.length = 0;
 createOption(country, countryArr[province.selectedIndex][this.selectedIndex]);     //对区标创建新选项
}
province.onchange();
}

function createOption(obj, data){           //对数据进行遍历
for (var i = 0; i < data.length; i++) {
 var newOption = new Option(data[i], data[i]);      //取消上一级菜单的选项时,次一级选项消失
 obj.add(newOption, null);      
}
}

四、效果展示

省市区三级联动

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值