1. 程式人生 > 程式設計 >JS實現省市縣三級下拉聯動

JS實現省市縣三級下拉聯動

純JS實現省市縣三級下拉聯動,供大家參考,具體內容如下

程式碼如下:

<!DOCTYPE html>
<html lang="en">
<head>
 <meta charset="UTF-8">
 <title>省市縣三級下拉聯動-李康</title>
 <style>
 fieldset{
 width: 25%;
 border: 1px dashed black;
 }
 legend{
 margin-left: 135px;
 }
 </style>
</head>
<body>
 <form action="">
 <fieldset>
 <legend>地址資訊</legend>
 請選擇居住地:<br><br>
 <select id="province" οnchange="chooseProvince(this)">
 <option value="1">--請選擇省--</option>
 </select>
 <select id="city" οnchange="chooseCity(this)">
  <option value="2">--請選擇市--</option>
 </select>
 <select id="area">
 <option value="3">--請選擇區--</option>
 </select>
 </fieldset>
 </form>
 
 <script>
 var provinceList = [{
 name: '北京',cityList: [
 { name: '市轄區',areaList: ['東城區','西城區','崇文區','宣武區','朝陽區','豐臺區','石景山區','海淀區','門頭溝區','房山區','通州區','順義區','昌平區','大興區','懷柔區','平谷區'] },{ name: '縣',areaList: ['密雲縣','延慶縣'] }]
 },{
 name: '河南',cityList: [
 { name: '鄭州市',areaList: ['市轄區','中原區','二七區','管城回族區','金水區','上街區','邙山區','中牟縣','鞏義市','滎陽市','新密市','新鄭市','登封市'] },{ name: '開封市','龍亭區','順河回族區','鼓樓區','南關區','郊 區','杞 縣','通許縣','尉氏縣','開封縣','蘭考縣'] },{ name: '洛陽市','老城區','西工區','廛河回族區','澗西區','吉利區','洛龍區','孟津縣','新安縣','欒川縣','嵩 縣','汝陽縣','宜陽縣','洛寧縣','伊川縣','偃師市'] },{ name: '新鄉市','紅旗區','衛濱區','鳳泉區','牧野區','新鄉縣','獲嘉縣','原陽縣','延津縣','封丘縣','長垣縣','衛輝市','輝縣市'] },{ name: '焦作市','解放區','中站區','馬村區','山陽區','修武縣','博愛縣','武陟縣','溫 縣','濟源市','沁陽市','孟州市'] }]
 },{
 name: '湖北',cityList: [
 { name: '武漢市','江岸區','江漢區','喬口區','漢陽區','武昌區','青山區','洪山區','東西湖區','漢南區','蔡甸區','江夏區','黃陂區','新洲區'] },{ name: '黃石市','黃石港區','西塞山區','下陸區','鐵山區','陽新縣','大冶市'] },{ name: '十堰市','茅箭區','張灣區','鄖 縣','鄖西縣','竹山縣','竹溪縣','房 縣','丹江口市'] }]
 }
 ];
 var provinceArray = new Array();
 var cityArray = new Array();
 var areaArray = new Array();
 var provinceTag = document.getElementById("province");
 var cityTag = document.getElementById("city");
 var areaTag = document.getElementById("area");
 window.onload = function(){ //用window的onload事件,窗體載入完畢的時候
 var provinceTag = document.getElementById("province");
 var cityTag = document.getElementById("city");
 var areaTag = document.getElementById("area");
 for (var i = 0; i < provinceList.length; i++) {
 var province = provinceList[i]; //獲取省
 var provinceName = province.name; //獲取省名
 console.log(provinceName);
 provinceArray[i] = provinceName;
 provinceTag.add(new Option(provinceName,i));
 //通過Option方法將省名與下標對應,再將名字放到provinceTag中
 }
 }
 
 //建立省市之間的連線
 function chooseProvince(th) {
 var provinceTag = document.getElementById("province");
 var cityTag = document.getElementById("city");
 var areaTag = document.getElementById("area");
 var index = th.selectedIndex - 1; //“請選擇省” 佔了一個索引,所以需要減1
 var provinceName = provinceArray[index]; //獲取省名
 for (var n = 0; n < provinceList.length; n++) {
 var provice = provinceList[n];
 console.log(provice.name == provinceName); //控制檯列印方便觀看
 if (provice.name == provinceName) { //開始建立連線,通過if判斷,前提是要滿足if中的條件
  cityList = provice.cityList; //通過province的cityList獲取城市列表
  cityTag.innerHTML = ""; //保證city為所選中的省的市
  console.log(cityList); //控制檯列印
  for (var c = 0; c < cityList.length; c++) {
  var city = cityList[c]; //獲取城市
  var cityName = city.name; //獲取城市名
  cityArray[c] = cityName;
  cityTag.add(new Option(cityName,c)); //使用Option()方法獲取每一個索引對應的資料,然後使用add()方法存入到陣列中去,建立省市連線
  }
 }
 }
 }
 
 // 建立市縣之間的連線
 function chooseCity(ci) {
 var provinceTag = document.getElementById("province");
 var cityTag = document.getElementById("city");
 var areaTag = document.getElementById("area");
 var index = ci.selectedIndex;
 var cityName = cityArray[index];//獲取城市名
 for (var j = 0; j < cityList.length; j++) {
 var city = cityList[j];//獲取城市
 if (city.name == cityName) {
  var areaList = city.areaList;//縣級列表資料
  areaTag.innerHTML = "";
  for (var k = 0; k < areaList.length; k++) {
  var area = areaList[k];//獲取縣
  areaTag.add(new Option(area,k));
  }
 }
 }
 }
 </script>
</body>
 
</html>

效果如下

JS實現省市縣三級下拉聯動

如果大家還想深入學習,可以點選jquery下拉框效果彙總、JavaScript下拉框效果彙總進行學習。

以上就是javascript實現省市區三級聯動下拉框選單的全部程式碼,希望對大家的學習有所幫助。