使用javaScript实现省市级联

在实际项目中,前端的下拉框组件是一定会使用到的,省市级联算是下拉控件的经典情境了,那么咱们开始行动吧.
基本界面:

<!DOCTYPE html>
<html lang="zh">
<head>
    <meta charset="UTF-8">
    <title>省市级联</title>
    <style>
        select {
            height: 20px;
            line-height: 20px;
        }
    </style>
</head>
<body>:<select id="province">
<option>--请选择--</option>
</select>:<select id="city">
<option>--请选择--</option>
</select>
</body>
</html>

初始界面效果:

在这里插入图片描述

大概思路:准备省和市的数据,在窗体加载的时候,加载省的数据,然后拿到省select的onchange事件,根据省的value查询对应的市数据,加载到市的select中即可.
直接把代码贴上来吧,代码里边写好了每一步实现.

<script>
    //准备省,市的数据
    let provinceData={"beijing":"北京","shanxi":"山西","hubei":"湖北"};
    let cityData={"beijing":[{"dongcheng":"东城区"},{"xicheng":"西城区"},{"chaoyang":"朝阳区"}],
        "shanxi":[{"datong":"大同市"},{"taiyuan":"太原市"},{"xinzhou":"忻州市"}],
        "hubei":[{"wuhan":"武汉市"},{"xiaogan":"孝感市"}]};
    //获取省标签
    let provSelect = document.querySelector("#province");
    //获取市标签
    let citySelect = document.querySelector("#city");

    //窗体加载时,加载省数据
    window.onload=function () {
        //获取省标签
        //迭代省的数据
        //forin可以遍历数组和对象,遍历的结果是数组的索引或者对象的键
        // forof遍历数组的元素,遍历的结果是数组的值
        for (let i in provinceData) {
            //创建option标签
            let provOption=document.createElement("option");
            provOption.value=i;
            provOption.innerHTML=provinceData[i];
            //追加到select中
            provSelect.appendChild(provOption);
            //第二种追加的简单方法  直接provSelect.innerHtml="标签"
        }
    }
    //省的下拉框值有改变的时候,加载市的数据
    provSelect.onchange=function () {
        //省select没改变一会,清空市的option(假如不清空,省select改变,市select会保留上次的option
       citySelect.innerHTML = '<option value="0">--请选择--</option>';
       //得到市的数据
        let cityTempData = cityData[this.value];
        for (let i=0;i<cityTempData.length;i++) {
            for (let j in cityTempData[i]) {
                let cityOption = document.createElement("option");
                cityOption.value=j;
                cityOption.innerHTML='<option value="'+j+'">'+cityTempData[i][j]+'</option>';
                citySelect.appendChild(cityOption);
            }
        }
    }
</script>

最终效果:选择山西省

选择北京市
over,天生白菜必有用!

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值