1. 程式人生 > >級聯下拉列表(三級)

級聯下拉列表(三級)

<!DOCTYPE html>
<html lang="zh">
<head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <meta http-equiv="X-UA-Compatible" content="ie=edge" />
    <title>Document</title>
    <script>
     //宣告省,一維陣列
          var provinces = ["廣西", "廣東", "湖南"]; //直接宣告Array
           //宣告市,二維陣列
          var cities = [
              ["桂平", "柳州", "南寧"],
              ["中山", "廣州","珠海"],
              ["衡陽", "湘潭","長沙"]
          ];

       //宣告鄉鎮,三維陣列
          var areas = [
                  [
                      ["桂平1", "桂平2", "桂平3"],
                      ["柳州1", "柳州2", "柳州3"],
                      ["南寧1", "南寧2", "南寧3"]
                  ],
                  [
                      ["中山1", "中山2", "中山3"],
                      ["廣州1", "廣州2", "廣州3"],
                      ["珠海1", "珠海2", "珠海3"]
                  ],
                  [
                      ["衡陽1", "衡陽2","衡陽3"],
                      ["湘潭1", "湘潭2","湘潭3"],
                      ["長沙1", "長沙2","長沙3"]
                  ]
              ]
          
          //初始化省份
          window.onload=function initProvince(){               
                var pro = document.getElementById("province");                
                for(var i=0;i<provinces.length;i++){
                     pro.add(new Option(provinces[i],i),null);    //i為value值                
                }
          }
          var pindex;
          //省份變化,城市也跟著變化
          function changeProvince(){
                 var province = document.getElementById("province");
                 var ci = document.getElementById("city");
                 var country = document.getElementById("countrySide");                
                 ci.options.length=0;//清空城市列表
                 country.options.length=0;//清空鄉鎮列表
                 pindex = province.value;//省份下標
                 //哈哈,我愛編程式碼,如果選擇省份為:請選擇省份,那麼城市和鄉鎮也跟著改變為請選擇。。。
                 if(-1==pindex){
                      ci.add(new Option("--請選擇省份--","-2"),null);
                      country.add(new Option("--請選擇省份--","-2"),null);
                 }
                 var city = cities[pindex];//省份對應的城市(預設值)
                 var quxu = areas[pindex][0];//城市對應的鄉鎮
                
                 //城市變化
                 for(var i=0;i<city.length;i++){                        
                        ci.add(new Option(city[i],i),null);////i為value值                        
                 }               
                 //鄉鎮變化(預設值)                 
                 for(var i=0;i<quxu.length;i++){
                       country.add(new Option(quxu[i],i),null);                      
                 }
          }
          //鄉鎮跟著城市變化
          function changeCity(){
                 var countrySide = document.getElementById("countrySide");
                 countrySide.options.length=0;//清空鄉鎮列表
                 var cindex = document.getElementById("city").value;//城市的下標
                 var count = areas[pindex][cindex];//省份對應的城市所對應的鄉鎮
                 for(var i=0;i<count.length;i++){
                       countrySide.add(new Option(count[i],i),null);  
                 }
          }
    </script>
</head>
<body>
      <h2>省市鄉</h2>
         省份選擇:<select id="province" onchange="changeProvince()">
                 <option value="-1">--請選擇省份--</option>
           </select>
        城市選擇:<select id="city" onchange="changeCity()">
                <option value="-1">--請選擇城市--</option>
           </select>
       鄉鎮選擇:<select id="countrySide">
                   <option value="-1">--請選擇鄉鎮--</option>
           </select>      
</body>
</html>

未選擇時:

選擇任意省份,市和鄉鎮也預設選擇了

選擇城市,鄉鎮也跟著改變:

如果選擇請選擇省份,城市和鄉鎮也跟著變為請選擇。。。