省市区三级联动

要求:

通过三个下拉菜单的联动来实现,第一级下拉菜单为省级,第二级下拉菜单为市级,第三级下拉菜单为区级。当点击第一级下拉菜单,第二级菜单的内容会自动匹配;选择第二级菜单时,第三级菜单会自动生成。当我取消上一级菜单的选项时,次一级选项会自动消失。

思路;

运用到了二维,三维数组,然后当选中省级菜单时,市级二维数组选中对应的市元素集,然后在遍历出该元素集中的城市,区元素同理

代码:

 <style>
        *{
            outline: none;
            margin: 0;
            padding: 0;
        }
        body{
            width: 500px;
            margin: 200px auto 0;
        }
    </style>
</head>
    <body>
        <select id="province">
            <option>请选择所在省份</option>
        </select>
        <select id="city">
            <option>请选择所在城市</option>
        </select>
        <select id="quxian">
            <option>请选择所在区县</option>
        </select>
    </body>
    <script>
        var arr_province = ["江苏", "安徽", "福建"];
        var arr_city = [
            ["南京", "无锡", "徐州"],
            ["合肥", "芜湖","滁州"],
            ["福州", "厦门"]
        ]
        var arr_quxian = [
            [
                ["玄武区","秦淮区","鼓楼区","浦口区"],
                ["锡山区","惠山区","滨湖区","梁溪区"],
                ["云龙区","泉山区","贾汪区","铜山区"],
            ],
            [
                ["瑶海区", "庐阳区", "蜀山区", "包河区"],
                ["镜湖区", "鸠江区", "湾沚区", "繁昌区"]
            ],
            [
                ["鼓楼区", "台江区", "沧山区", "马尾区"],
                ["吴兴区","南浔区","德清县","长兴区"]
            ]
        ];
        var province = document.getElementById("province");
        var city = document.getElementById("city");
        var quxian = document.getElementById("quxian");
        var proIndex = 0; 
        for(var i = 0; i < arr_province.length; i++) {
            province.options.add(new Option(arr_province[i]));
        }
        province.onchange = function() {
            city.options.length = 1;//长度为1时,只会显示索引值为0的元素
            quxian.options.length = 1;
            proIndex = province.selectedIndex - 1;//因为0为“请选择”,所有要-1才能对应索引值
            if(proIndex > -1) {
                for(var i = 0; i < arr_city[proIndex].length; i++) {
                    city.options.add(new Option(arr_city[proIndex][i]));
                } 
            }
        }
        city.onchange = function() {
            quxian.options.length = 1;
            var cityIndex = city.selectedIndex - 1;
            if(cityIndex > -1) {
                for(var i = 0; i < arr_quxian[proIndex][cityIndex].length; i++) {
                    quxian.options.add(new Option(arr_quxian[proIndex][cityIndex][i]));
                }
            }      
        }
    </script>

视频:

QQ视频20230117233516

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值