聊聊如何使用Js写一个简单的二级联动和三级联动呢?

前言:咳咳哈,大佬说:"这不是有手就行了?"好吧,这里不做过多罗里吧嗦,真的不过多吹,我们在下面直接上代码上注释。

 

文章目录:

  1. 原Js二级联动实现
  2. 原Js三级联动实现

 

一、二级联动的实现

第一步

在HTML页面创建两个 select 下拉列表元素,并设置id为 ‘province’和id ‘city’

<!--省份-->
<select id="province" onchange="getCity()"></select>
  
<!--城市-->  
<select id="city">
        <option>请选择</option>
</select>

第二步

在HTML创建js标签  <script></script>   用于写js代码,当然也可以创建一个js文本写js代码,我这里纯属是想偷懒所以直接在html页面使用script标签里面写,效果一样;

好了,不啰嗦,现在开始写js代码

首先我们要创建 javaScript 对象字面量,它是[object literal]的一种形式;是用来创建包含键值对的对象,可以快速地创建和初始化一个对象,不再需要定义一个构造函数!

    //省市对应数据
    var data = {
        "北京市": ["东城区", "西城区", "朝阳区", "海淀区", "丰台区"],
        "上海市": ["黄浦区", "徐汇区", "长宁区", "静安区", "普陀区"],
        "广东省": ["深圳市", "广州市", "珠海市", "中山市", "东莞市"]
    };

接下来就是for(var key in data)初始化省份

getElementById("xxx") 获取id

createElement("xxx") 创建一个html元素节点

   //初始化省份
    var province = document.getElementById("province");
    for (var key in data) {
        var option = document.createElement("option");
        option.innerText = key;
        province.appendChild(option);
    }

创建函数获取城市

  //获取城市
    function getCity() {
        var provinceName = province.value;
        var city = document.getElementById("city");
        city.innerHTML = "";
        if (data[provinceName]) {
            for (var i = 0; i < data[provinceName].length; i++) {
                var option = document.createElement("option");
                option.innerText = data[provinceName][i];
                city.appendChild(option);
            }
        }
    }

写到这里,二级联动也就写完了,当然还有其他写法也可以同样做到这样的效果,在这里也就不一一演示了。

 

二、三级联动的实现

三级联动的实现要比二级联动实现复杂了一点点,但是,并不算难!

第一

老套路,和上面二级联动一样,先在HTML创建三个  <select></select> 下拉列表

  <select id="province">
        
    </select>
 
    <select id="city">
        <option>请选择</option>
    </select>


    <select id="district">
        <option>请选择</option>
    </select>

第二

和上面一样在html创建<script>标签,然后创建 JavaScript 对象字面量

var data = {
  "广东省": {
    "珠海市": ["香洲区", "斗门区"],
    "广州": ["番禺", "黄埔"]
  },
  "仙侠世界": {
    "玄幻大陆": ["无敌区", "无人区"],
    "科技大陆": ["天才区", "学士区"]
  }
};

 

1)接下来就是for(var key in data)初始化省份

// 获取省份列表
var province = document.getElementById("province");
for (var key in data) {
  var option = document.createElement("option");
  option.text = key;
  province.add(option);
}

2)根据省份获取城市列表

// 根据省份获取城市列表
function getCity() {
  var city = document.getElementById("city");
  var district = document.getElementById("district");

  //城市为0,当选择了省份的时候才有数据
  city.options.length = 0;
  var selectedProvince = province.options[province.selectedIndex].text;
  
  //循环遍历data城市数据到option
  for (var key in data[selectedProvince]) {
    var option = document.createElement("option");
    option.text = key;

    //添加数据
    city.add(option);
  }
}

3)根据城市获取区县列表

// 根据城市获取区县列表
function getDistrict() {
  var district = document.getElementById("district");

  //区县为0,当选择了城市的时候才有数据
  district.options.length = 0;

  //获取城市
  var selectedProvince = province.options[province.selectedIndex].text;
  
  //获取区县
  var selectedCity = city.options[city.selectedIndex].text;
 

  //循环遍历
  for (var i = 0; i < data[selectedProvince][selectedCity].length; i++) {
    var option = document.createElement("option");
    option.text = data[selectedProvince][selectedCity][i];
    district.add(option);
  }
}

// 函数绑定到省份和城市下拉框的 onchange 事件上
//县列表以便在用户选择不同的省份或城市时自动更新城市和区
province.onchange = getCity;
city.onchange = getDistrict;

总结:

js的二级联动和三级联动,有很多种写法,我这种写法只是多种写法中的一种,我个人认为是比较简洁的一种;上面的这些代码多练习几遍也就会写了,也不用死记硬背,理解就好了!实在怕忘记就一键三连吧!哈哈!

 

 

 

  • 3
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
下面是一个简单HTMLJavaScript代码,实现了二级联动的选择框: ```html <!DOCTYPE html> <html> <head> <title>二级联动选择框</title> </head> <body> <div> <label for="province">省份:</label> <select id="province" onchange="getCity()"> <option value="">请选择</option> <option value="beijing">北京</option> <option value="shanghai">上海</option> </select> </div> <div> <label for="city">城市:</label> <select id="city"> <option value="">请选择</option> </select> </div> <script> // 城市数据 var cityData = { "beijing": ["东城区", "西城区", "朝阳区", "海淀区"], "shanghai": ["黄浦区", "徐汇区", "长宁区", "静安区"] }; function getCity() { var province = document.getElementById("province"); var city = document.getElementById("city"); // 获取选中的省份 var provinceValue = province.value; // 清空城市选择框 city.innerHTML = ""; // 如果选择了省份,则显示对应的城市列表 if (provinceValue) { // 获取城市数据 var cityArray = cityData[provinceValue]; // 添加城市选项 for (var i = 0; i < cityArray.length; i++) { var option = document.createElement("option"); option.text = cityArray[i]; option.value = cityArray[i]; city.add(option); } } } </script> </body> </html> ``` 这个代码实现了一个省份和城市的二级联动选择框。当用户选择省份时,程序会根据省份的值获取相应的城市数据,并将城市选项添加到城市选择框中。用户可以在城市选择框中选择城市。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

半杯可可

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值