JavaScript实现省市区三级联动

简介: JavaScript实现省市区三级联动之前的文章中我们说到过如何利用JavaScript实现二级联动,这次我们来说说如何利用JavaScript实现三级联动。效果如图:在这里插入图片描述HTML代码: 请选择省份:<select name="" id="province"> <option value="">请选择省份......</option> </select> 请选择城市:<select name="" id="city"> <option value="">请选择城市......</option> </sel

JavaScript实现省市区三级联动




之前的文章中我们说到过如何利用JavaScript实现二级联动,这次我们来说说如何利用JavaScript实现三级联动。效果如图:


20200603003118104.gif

在这里插入图片描述


HTML代码:


 

请选择省份:<selectname=""id="province"><optionvalue="">请选择省份......</option></select>    请选择城市:<selectname=""id="city"><optionvalue="">请选择城市......</option></select>    请选择地区:<selectname=""id="area"><optionvalue="">请选择地区......</option></select>


JavaScript代码:


// 1.创建三维数组
    var provinces=[];
    provinces["江苏省"]=["南京市","无锡市","苏州市"];
    provinces["浙江省"]=["杭州市","宁波市"];
    provinces["安徽省"]=["合肥市","马鞍山市"];
    var citys=[];
    citys["南京市"]=["玄武区","雨花台区","鼓楼区","秦淮区","六合区"];
    citys["无锡市"]=["滨湖区","惠山区","梁溪区"];
    citys["苏州市"]=["姑苏区","吴江区"];
    citys["杭州市"]=["西湖区","临安区","上城区"];
    citys["宁波市"]=["江北区","江东区"];
    citys["合肥市"]=["蜀山区","瑶海区"];
    citys["马鞍山市"]=["花山区","雨山区"];
    // 2.获取元素
    var oprovince = document.getElementById('province');
    var ocity = document.getElementById('city');
    var oarea = document.getElementById('area');
    for (province in provinces) {
        oprovince.add(new Option(province, province))//省份下拉菜单
    }
    oprovince.onchange = function () {//省份下拉菜单内容改变时 执行的命令
        var selectvalue = oprovince.value;//获取省份下拉菜单的值
        ocity.innerHTML = '<optionvalue="">请选择城市......</option>';
        oarea.innerHTML = ' <optionvalue="">请选择市区......</option>';
        for (provincename in provinces) {//遍历省份的名称
            if (provincename == selectvalue) {
                for (cityname in provinces[provincename]) {//遍历城市名称
                    ocity.add(new Option(provinces[provincename][cityname], provinces[provincename][cityname]));
                }
            }
        }
    }
    ocity.onchange = function () {
        oarea.innerHTML = ' <optionvalue="">请选择市区......</option>';
        var cityValue = ocity.value;
        for (i in citys) {//i是area数组的索引值(城市名称)
            if (i == cityValue) {
                for (j in citys[i]) {
                    oarea.add(new Option(citys[i][j], citys[i][j]));
                }
            }
        }
    }
    // 3.向省份菜单添加选项
    for(province in provinces){
        oPro.add(new Option(province,province))
    }
    // 4.根据省份选择城市
    oPro.onchange=function(){
        var sel_val=oPro.value;//获取选择的省份
        oCity.innerHTML = '<optionvalue="">请选择城市......</option>';
        oArea.innerHTML = ' <optionvalue="">请选择市区......</option>';
        for(province in provinces){
            if(province == sel_val){
                for(cityname in provinces[province]){
                    oCity.add(new Option(provinces[province][cityname],provinces[province][cityname]))
                }
            }
            oCity.add(new Option())
        }
    }
    oCity.onchange=function(){
        var sel_val2=oCity.value;//获取选择的省份
        for(city in citys){
            if(province == sel_val){
                for(areaname in provinces[province]){
                    oArea.add(new Option(provinces[province][cityname],provinces[province][cityname]))
                }
            }
            oCity.add(new Option())
        }
    }


总结一下: 其实实现三级联动效果和前面实现二级联动效果基本上没太大区别,相当于是两个二级联动的“嵌套”。误区就是认为二级联动利用二维数组,三级联动就是利用三维数组。但这里其实是使用了两个二级联动进行了嵌套。


视频解析链接:
https://www.bilibili.com/video/BV1st4y1y7xs/


相关文章
|
9月前
|
JSON JavaScript 数据格式
如何用JS实现三级联动功能
如何用JS实现三级联动功能
74 0
|
9月前
|
JavaScript 前端开发
原生js做三级联动
原生js做三级联动
40 0
|
4月前
|
JavaScript
js实现省市区的三级联动
js实现省市区的三级联动
62 7
|
6月前
|
JavaScript
js省市区三级联动
js省市区三级联动
47 1
|
6月前
|
JSON JavaScript 前端开发
js省市区三级联动
js省市区三级联动
71 1
|
6月前
|
JavaScript
js实现省市区三级联动
js实现省市区三级联动
78 0
|
9月前
|
JavaScript 前端开发
「 javaScript实现省市区三级联动」
「 javaScript实现省市区三级联动」
|
8月前
|
存储 JavaScript 前端开发
JS三级联动
JS三级联动
|
9月前
|
JavaScript 前端开发
js 实现三级联动
js 实现三级联动
102 0
|
9月前
|
JavaScript
制作JS省市区三级联动遇到市区选项是空白的问题
制作JS省市区三级联动遇到市区选项是空白的问题

热门文章

最新文章

  • 1
    【02】仿站技术之python技术,看完学会再也不用去购买收费工具了-本次找了小影-感觉页面很好看-本次是爬取vue需要用到Puppeteer库用node.js扒一个app下载落地页-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-优雅草卓伊凡
    23
  • 2
    Node.js 中实现多任务下载的并发控制策略
    32
  • 3
    【2025优雅草开源计划进行中01】-针对web前端开发初学者使用-优雅草科技官网-纯静态页面html+css+JavaScript可直接下载使用-开源-首页为优雅草吴银满工程师原创-优雅草卓伊凡发布
    25
  • 4
    【JavaScript】深入理解 let、var 和 const
    48
  • 5
    【04】Java+若依+vue.js技术栈实现钱包积分管理系统项目-若依框架二次开发准备工作-以及建立初步后端目录菜单列-优雅草卓伊凡商业项目实战
    44
  • 6
    【03】Java+若依+vue.js技术栈实现钱包积分管理系统项目-若依框架搭建-服务端-后台管理-整体搭建-优雅草卓伊凡商业项目实战
    52
  • 7
    【02】Java+若依+vue.js技术栈实现钱包积分管理系统项目-商业级电玩城积分系统商业项目实战-ui设计图figmaUI设计准备-figma汉化插件-mysql数据库设计-优雅草卓伊凡商业项目实战
    55
  • 8
    如何通过pm2以cluster模式多进程部署next.js(包括docker下的部署)
    71
  • 9
    【01】Java+若依+vue.js技术栈实现钱包积分管理系统项目-商业级电玩城积分系统商业项目实战-需求改为思维导图-设计数据库-确定基础架构和设计-优雅草卓伊凡商业项目实战
    55
  • 10
    JavaWeb JavaScript ③ JS的流程控制和函数
    62