省市区三级联动

考核二-任务七-省市区三级联动

需求

在这里插入图片描述

html部分

    <select id="sheng">
        <option value="">请选择</option>
    </select>
    <select id="shi">
        <option value="">请选择</option>
    </select>
    <select id="qu">
        <option value="">请选择</option>
    </select>

JavaScript部分

var sheng = document.getElementById('sheng')
var shi = document.getElementById('shi')
var qu = document.getElementById('qu')

var frag = document.createDocumentFragment()

var data = [{
    "name":"广东省",
    "children":[{
        "name":"广州市",
        "children":[{
            "name":"天河区"
        },{
            "name":"白云区"
        },{
            "name":"黄埔区"
        },{
            "name":"海珠区"
        },{
            "name":"越秀区"
        },{
            "name":"花都区",
        },{
            "name":"从化区",
        },{
            "name":"番禺区",
        },{
            "name":"南沙区",
        },{
            "name":"荔湾区",
        }]
    },{
        "name":"佛山市",
        "children":[{
            "name":"禅城区"
        },{
            "name":"南海区"
        },{
            "name":"顺德区"
        },{
            "name":"三水区"
        },{
            "name":"高明区"
        }]
    },{
        "name" : "深圳市",
        "children" : [{
            "name" : "市辖区"
        }, {
            "name" : "罗湖区"
        }, {
            "name" : "福田区"
        }, {
            "name" : "南山区"
        }, {
            "name" : "宝安区"
        }, {
            "name" : "龙岗区"
        }, {
            "name" : "盐田区"
        }]
    }]
},{
    "name":"河南省",
    "children":[{
        "name" : "周口市",
        "children" : [{
                "name" : "市辖区"
            }, {
                "name" : "川汇区"
            }, {
                "name" : "扶沟县"
            }, {
                "name" : "西华县"
            }, {
                "name" : "商水县"
            }, {
                "name" : "沈丘县"
            }, {
                "name" : "郸城县"
            }, {
                "name" : "淮阳县"
            }, {
                "name" : "太康县"
            }, {
                "name" : "鹿邑县"
            }, {
                "name" : "项城市"
            }
        ]
    },{
        "name" : "郑州市",
        "children" : [{
                "name" : "市辖区"
            }, {
                "name" : "中原区"
            }, {
                "name" : "二七区"
            }, {
                "name" : "管城回族区"
            }, {
                "name" : "金水区"
            }, {
                "name" : "上街区"
            }, {
                "name" : "惠济区"
            }, {
                "name" : "中牟县"
            }, {
                "name" : "巩义市"
            }, {
                "name" : "荥阳市"
            }, {
                "name" : "新密市"
            }, {
                "name" : "新郑市"
            }, {
                "name" : "登封市"
            }
        ]
    },]
}]

for (var i=0;i<data.length;i++){
    var option = document.createElement('option')
    option.innerHTML = data[i].name
    frag.appendChild(option)
 }
 sheng.appendChild(frag)

 var shiArr = []
 sheng.onchange = function(){
    shi.innerHTML="<option value=\"\">请选择</option>"

    for (var i = 0;i<data.length;i++){
        if(data[i].name==this.value){
            shiArr = data[i].children;
            break
        }
    }
    for(var j=0;j<shiArr.length;j++){
        var option = document.createElement("option")
        option.innerHTML = shiArr[j].name
        frag.appendChild(option)
    }
    shi.appendChild(frag)
 }
 var quArr = []
    shi.onchange = function () {
        qu.innerHTML="<option value=\"\">请选择</option>"
        for (var i = 0; i < shiArr.length; i++) {
            if (shiArr[i].name == this.value) {
                quArr = shiArr[i].children;
                break;
            }
        }
        for (var j = 0; j < quArr.length; j++) {
            var option = document.createElement("option");
            option.innerHTML = quArr[j].name;
            frag.appendChild(option);
        }
        qu.appendChild(frag);
    }

在这里插入图片描述

实现原理

  1. 先设置三个下拉菜单
  2. 把省市区三级存在一个数组中,其中省是最大的,以对象的方式存储在数组中
  3. 先把遍历后数组的name给存入省级菜单中
  4. 在建立一个新数组,再把省菜单和市菜单建立联系
  5. 遍历数据,将遍历的数据与当前的省作比较,将相对应的市级数据存放到数组中
  6. 以同样的方式将区级数据写入
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值