原生js實現級聯下拉列表


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

<body onload="load()">
    <div>
        <select class='prov' id='prov' onchange='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列表中,上一省份對應城市的結果會影響下一省份的城市列表(不妨試一試);故要用這條代碼清空列表,消除影響。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM