原生js实现级联下拉列表

<!DOCTYPE>
<html>
<head>
    <title>级联下拉列表</title>
    <meta charset="UTF-8">
</head>

<body οnlοad="load()">
    <div>
        <select class='prov' id='prov' οnchange='changeCity()'>
            <option value=''>--请选择省--</option>
        </select>
        <select class='city' id='city'>
            <option value=''>--请选择市--</option>
        </select>
    </div>

    <script>
        var province=document.getElementById("prov");
        var city=document.getElementById("city");
        var arr_prov=new Array(new Option("--请选择省--",''),new Option("湖南","hn"),new Option("广东","gd"));
        var arr_city=new Array();
        arr_city[0]=new Array(new Option("--请选择市--",''));
        arr_city[1]=new Array(new Option("长沙",'cs'),new Option("娄底",'ld'),new Option("永州",'yz'));
        arr_city[2]=new Array(new Option("广州",'gz'),new Option("深圳",'sz'));
        //动态载入所有省份
        function load(){
            for(var i=0;i<arr_prov.length;i++){
                province.options[i]=arr_prov[i];
            }
        }
        //选中省份之后,根据索引动态载入相应城市
        function changeCity(){
            //清空上次的选项
            city.options.length=0;
            //获取省一级的下拉列表选中的索引
            var index=province.selectedIndex;
            for(var i=0;i<arr_city[index].length;i++){
                city.options[i]=arr_city[index][i];
            }
        }
    </script>
</body>
</html>
要点:
1.省份信息可以在页面加载时就导入
2.城市信息随着省份选择的改变而改变,故应放在省份的onchange函数内
3.本例核心:selectedIndex属性,下拉列表所选中项的索引
4.一个bug处理:若不加上“city.options.length=0”,则在city列表中,上一省份对应城市的结果会影响下一省份的城市列表(不妨试一试);故要用这条代码清空列表,消除影响。

转载于:https://www.cnblogs.com/dll-ft/p/5539219.html

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值