当前位置 博文首页 > 文章内容

    JavaScript实现网页下拉列表的省市联动

    作者:shunshunshun18 栏目:未分类 时间:2021-09-07 14:45:00

    本站于2023年9月4日。收到“大连君*****咨询有限公司”通知
    说我们IIS7站长博客,有一篇博文用了他们的图片。
    要求我们给他们一张图片6000元。要不然法院告我们

    为避免不必要的麻烦,IIS7站长博客,全站内容图片下架、并积极应诉
    博文内容全部不再显示,请需要相关资讯的站长朋友到必应搜索。谢谢!

    另祝:版权碰瓷诈骗团伙,早日弃暗投明。

    相关新闻:借版权之名、行诈骗之实,周某因犯诈骗罪被判处有期徒刑十一年六个月

    叹!百花齐放的时代,渐行渐远!



    大家好,今天我和大家分享网页中下拉列表的省市联动。在我们平常填写一些信息时就会有省市联动,就是在第一个下拉列表中选择我们所在的省,后面一个下拉列表显示该省的所有城市。

    既然是省市联动,我们就不能把数据直接写到网页上,我们应该通过第一个下拉列表的省动态生成该省的所有城市。我们可以先定义一个JSON对象表示省,在对象中定义一个数组存储一个省中的所有城市(这里的城市也是JSON对象),最后用数组存储所有的省。我们可以利用JavaScript在网页上面添加选项option。联动这块我们可以为第一个下拉列表添加一个change事件,当它改变时后一个下拉列表的就更新为当前省的所有城市。

    首先我们需要省市的数据:就是一个包含所有省的数组,而且每个省中有一个城市数组。这里我是写北京为例子。

    var data = [
    {
            "province": "北京",
            "city": [
                {
                    "cname": "北京",
                    "code": "101010100"
                },
                {
                    "cname": "朝阳",
                    "code": "101010300"
                },
                {
                    "cname": "顺义",
                    "code": "101010400"
                },
                {
                    "cname": "怀柔",
                    "code": "101010500"
                },
                {
                    "cname": "通州",
                    "code": "101010600"
                },
                ...
            ]
        },
        ....]

    然后我们先在页面上显示两个下拉列表

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>所在地区</title>
    </head>
    <body>
    <select id="province"></select>省
    <select id="city"></select>市
    <script src="js/data.js"></script>
    <script src="js/mycity.js"></script>
    </body>
    </html>

    对应的JavaScript的代码:先对数组进行遍历得到的是所有的省,再对每个省遍历就能改省的所有城市。通过创建和添加option节点在页面上显示。

    // 对数据进行遍历显示所有省
    data.forEach((p, i) => {
        //创建一个option节点
        let option = document.createElement('option');
        //设置option节点文本值
        option.textContent = p.province;
        //设置option节点的value值
        option.value = i;
        //向id为province的元素中追加了一个子节点option
        $('province').appendChild(option);
        //默认在下拉列表加载城市
        chooseCity(0);
    })
    //为向id为province的元素添加‘change'事件
    $('province').addEventListener('change', function () {
    
    /* 在下拉列表中加载城市*/
        chooseCity(this.value);
    })
    //函数:获取对应省的所有城市
    function chooseCity(index) {
        //通过索引获取对应的省
        let p = data[index];
        //清除当前的城市信息
        $('city').length = 0;
        //获取对应省的所有城市
        let cities = p.city;
        //对所有城市进行遍历显示
        cities.forEach(c => {
            //创建一个option1节点
            let option1 = document.createElement('option');
            //设置option1节点文本值
            option1.textContent = c.cname;
            //向id为city的元素中追加了一个子节点option1
            $('city').appendChild(option1);
        })
    }
    //函数:通过id获取元素
    function $(id) {
        return document.getElementById(id);
    }

    以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持IIS7站长之家博文。