1. 程式人生 > >下拉框資料聯動

下拉框資料聯動

聯動

無聊玩一下
直接上程式碼

要做的聯動

<body>
    國家:
    <select id="gj"></select>
    省:
    <select id="cs"></select>
    市:
    <select id="s"></select>
</body>

準備資料

		//包含有國家名稱的陣列
        var guojia = ["--請選擇--", "中國", "尼泊爾", "美國", "韓國", "德國"];
        //包含有對應省的陣列
        var shengshi = [
            ["--請選擇--"],
            ["--請選擇--", "湖北", "湖南", "河北", "河南", "吉林", "黑龍江", "烏魯木齊"],/*中國*/
            ["--請選擇--", "比拉德訥格爾", "賈納克布林", "黑道達", "博卡拉"],/*尼泊爾*/
            ["--請選擇--", "紐約", "洛杉磯", "舊金山", "芝加哥", "休斯頓"],/*,美國*/
            ["--請選擇--", "首爾", "釜山", "仁川", "春川", "蔚山"],/*韓國*/
            ["--請選擇--", "柏林", "漢堡市", "北萊茵-威斯特法倫州", "薩爾州"]/*德國*/
        ];
        //包含對應市的陣列
        var dijishi = [
            [["--請選擇--"]],
            [
                ["--請選擇--"],
                ["--請選擇--","武漢", "黃石", "潛江", "仙桃"],/*湖北*/
                ["--請選擇--", "長沙", "株洲", "湘潭"],/*湖南*/
                ["--請選擇--", "石家莊", "秦皇島", "唐山"],/*河北*/
                ["--請選擇--", "鄭州", "開封", "新鄉"],/*河南*/
                ["--請選擇--", "長春", "遼源", "白城"],/*吉林*/
                ["--請選擇--", "哈爾濱", "大慶", "伊春"],/*黑龍江*/
                ["--請選擇--", "哈密", "博樂", "昌吉"],/*烏魯木齊*/
            ],/*中國*/
        ];
        //因為嫌資料輸入的煩,就沒新增別的國家的市

寫新增資料的方法

新增國家

        function f_gj() {
        	//把存有國家資料的陣列迴圈一遍
            for (var i = 0; i < guojia.length; i++) {
                //建立一個option
                var o = document.createElement('option');
                o.text = guojia[i];//設定顯示的值
                o.value = guojia[i];//設定value
                //把建立的option新增到下拉框中去
                document.getElementById("gj").add(o);
            }
        }

新增省和市

        //迴圈新增城市
        function f_cs() {
            //獲取城市選項的長度
            var index = document.getElementById("cs").length;
            //迴圈刪除所有的選項
            for (var j = index-1; j > -1; j--) {
            	//移除下拉框物件中索引為j的選項
                document.getElementById("cs").remove(j);
            }
//如果不做以上操作下拉框中的選項會隨著函式的觸發只增不減

            //獲取國家下拉框選中的值對應的索引
            var xiabiao1 = document.getElementById("gj").selectedIndex;
            //迴圈一遍對應省的資料
            for (var i = 0; i < shengshi[xiabiao1].length; i++) {
                //建立一個option
                var o = document.createElement('option');
                o.text = shengshi[xiabiao1][i];//設定顯示的值
                o.value = shengshi[xiabiao1][i];//設定value
                document.getElementById("cs").add(o);//新增
            }
        }

        //迴圈新增市
        function f_s() {
            //獲取市選項的長度
            var index = document.getElementById("s").length;
            //迴圈刪除所有的選項
            for (var j = index - 1; j > -1; j--) {
                document.getElementById("s").remove(j);//移除
            }

            //國家下拉框選中值的索引
            var xiabiao1 = document.getElementById("gj").selectedIndex;
            //省下拉框選中值的索引
            var xiabiao2 = document.getElementById("cs").selectedIndex;
            //迴圈一遍對應市的資料
            for (var i = 0; i < dijishi[xiabiao1][xiabiao2].length; i++) {
                //建立一個option
                var o = document.createElement('option');
                o.text = dijishi[xiabiao1][xiabiao2][i];//設定顯示的值
                o.value = dijishi[xiabiao1][xiabiao2][i];//設定value
                document.getElementById("s").add(o);//新增
            }
        }

執行方法

        //載入事件
        window.onload = function () {
            f_gj();//執行新增國家的函式
            f_cs();//執行新增省的函式
            f_s();//執行新增市的函式
            //以上是為了加載出“--請選擇--”
            
            //當國家下拉框的值改變的時候重新載入省下拉框的值
            document.getElementById("gj").onchange = f_cs;
            //當省的值改變的時候重新載入市的值
            document.getElementById("cs").onchange = f_s;
        }

完整程式碼

    <script type="text/javascript">
        //包含有國家名稱的陣列
        var guojia = ["--請選擇--", "中國", "尼泊爾", "美國", "韓國", "德國"];
        //包含有對應省市的陣列
        var shengshi = [
            ["--請選擇--"],
            ["--請選擇--", "湖北", "湖南", "河北", "河南", "吉林", "黑龍江", "烏魯木齊"],/*中國*/
            ["--請選擇--", "比拉德訥格爾", "賈納克布林", "黑道達", "博卡拉"],/*尼泊爾*/
            ["--請選擇--", "紐約", "洛杉磯", "舊金山", "芝加哥", "休斯頓"],/*,美國*/
            ["--請選擇--", "首爾", "釜山", "仁川", "春川", "蔚山"],/*韓國*/
            ["--請選擇--", "柏林", "漢堡市", "北萊茵-威斯特法倫州", "薩爾州"]/*德國*/
        ];
        //包含對應地級市的陣列
        var dijishi = [
            [["--請選擇--"]],
            [
                ["--請選擇--"],
                ["--請選擇--","武漢", "黃石", "潛江", "仙桃"],/*湖北*/
                ["--請選擇--", "長沙", "株洲", "湘潭"],/*湖南*/
                ["--請選擇--", "石家莊", "秦皇島", "唐山"],/*河北*/
                ["--請選擇--", "鄭州", "開封", "新鄉"],/*河南*/
                ["--請選擇--", "長春", "遼源", "白城"],/*吉林*/
                ["--請選擇--", "哈爾濱", "大慶", "伊春"],/*黑龍江*/
                ["--請選擇--", "哈密", "博樂", "昌吉"],/*烏魯木齊*/
            ],/*中國*/
        ];
        //迴圈新增國家
        function f_gj() {
            for (var i = 0; i < guojia.length; i++) {
                //建立一個option
                var o = document.createElement('option');
                o.text = guojia[i];//設定顯示的值
                o.value = guojia[i];//設定value
                document.getElementById("gj").add(o);//新增選項到下拉框
            }
        }

        //迴圈新增城市
        function f_cs() {
            //獲取城市選項的長度
            var index = document.getElementById("cs").length;
            //迴圈刪除所有的選項
            for (var j = index-1; j > -1; j--) {
                document.getElementById("cs").remove(j);
            }
            //國家下拉框選中值的索引
            var xiabiao1 = document.getElementById("gj").selectedIndex;
            for (var i = 0; i < shengshi[xiabiao1].length; i++) {
                //建立一個option
                var o = document.createElement('option');
                o.text = shengshi[xiabiao1][i];//設定顯示的值
                o.value = shengshi[xiabiao1][i];//設定value
                document.getElementById("cs").add(o);
            }
        }

        //迴圈新增市
        function f_s() {
            //獲取市選項的長度
            var index = document.getElementById("s").length;
            //迴圈刪除所有的選項
            for (var j = index - 1; j > -1; j--) {
                document.getElementById("s").remove(j);
            }

            //國家下拉框選中值的索引
            var xiabiao1 = document.getElementById("gj").selectedIndex;
            //城市下拉框選中值的索引
            var xiabiao2 = document.getElementById("cs").selectedIndex;
            for (var i = 0; i < dijishi[xiabiao1][xiabiao2].length; i++) {
                //建立一個option
                var o = document.createElement('option');
                o.text = dijishi[xiabiao1][xiabiao2][i];//設定顯示的值
                o.value = dijishi[xiabiao1][xiabiao2][i];//設定value
                document.getElementById("s").add(o);
            }
        }

        //載入事件
        window.onload = function () {
            f_gj();//執行新增國家的函式
            f_cs();//執行新增省的函式
            f_s();//執行新增市的函式
            document.getElementById("gj").onchange = f_cs;//當國家下拉框的值改變的時候改變省下拉框的值
            document.getElementById("cs").onchange = f_s;//當省的值改變的時候改變市的值
        }

    </script>
<body>
    國家:
    <select id="gj"></select>
    省:
    <select id="cs"></select>
    市:
    <select id="s"></select>
</body>