<title>互動式下拉選單</title>

<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script>

</head>

<!-- 這裡將放置互動式下拉選單的內容 -->

</body>

</html>

<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script>

</head>

<h2>台灣縣市 API:</h2>

<p>第一層選單</p>

<select id="city" name="city">

<option value="">請選擇</option>

</select>

<p>第二層選單 (先隱藏,選完第一層後再出現)</p>

<select id="area" name="area" style=";">

<option value="">請選擇</option>

</select>

</body>

</html>

$.ajax({

url: 'https://raw.githubusercontent.com/donma/TaiwanAddressCityAreaRoadChineseEnglishJSON/master/CityCountyData.json',

type: "get",

dataType: "json",

success: function (data) {

console.log(data);

// 使用 $.each 遍歷資料,將縣市名稱填入第一層選單中

$.each(data, function (key, value) {

console.log(key, value)

$('#city').append('<option value="' + key + '">' + data[key].CityName + '</option>')

error: function (data) {

alert("讀取資料失敗");

// 第二層選單

$("#city").change(function(){

cityvalue = $("#city").val();  // 取得使用者選擇的縣市

$("#area").empty(); // 清空上次的值

$("#area").css("display", "inline"); // 顯示第二層選單

$.ajax({

url:'https://raw.githubusercontent.com/donma/TaiwanAddressCityAreaRoadChineseEnglishJSON/master/CityCountyData.json',

type:"get",

dataType:"json",

success:function(data){

eachval = data[cityvalue].AreaList; // 取得所選縣市的鄉鎮資料

// 使用 $.each 遍歷資料,將鄉鎮名稱填入第二層選單中

$.each(eachval, function (key, value) {

$('#area').append('<option value="' + key + '">' + eachval[key].AreaName + '</option>')

error:function(){

alert("讀取資料失敗");

// 選完後跳出選擇值

$("#area").change(function(){

cityvalue = $("#city").val();  // 縣市

areavalue = $("#area").val();  // 鄉鎮

$.ajax({

url:'https://raw.githubusercontent.com/donma/TaiwanAddressCityAreaRoadChineseEnglishJSON/master/CityCountyData.json',

type:"get",

dataType:"json",

success:function(data){

const cityname = data[cityvalue].CityName; // 取得所選縣市名稱

const areaname = data[cityvalue].AreaList[areavalue].AreaName; // 取得所選鄉鎮名稱

const selected = cityname + "-" + areaname; // 組合縣市與鄉鎮名稱

alert("您選擇的是:" + selected); // 顯示提示框,顯示所選的縣市與鄉鎮

error:function(){

alert("讀取資料失敗");

</script>

https://raw.githubusercontent.com/donma/TaiwanAddressCityAreaRoadChineseEnglishJSON/master/CityCountyData.json<br>

台灣縣市 API:<br>

第一層選單

<select id = "city" name="city">

<option value = "">請選擇</option>

</select>

第二層選單(先隱藏,選完第一層後再出現)

<select id = "area" name="area" style=";">

<option value = "">請選擇</option>

</select>

</body>

</html>

<script>

$(document).ready(function(){

//第一層選單

$.ajax({

url: 'https://raw.githubusercontent.com/donma/TaiwanAddressCityAreaRoadChineseEnglishJSON/master/CityCountyData.json',

type: "get",

dataType: "json",

success: function (data) {

console.log(data);

$.each(data,function(key,value){

console.log(key,value)

$('#city').append('<option value="'+key+'">'+data[key].CityName+'</option>')

error: function (data) {

alert("fail");

//第二層選單

$("#city").change(function(){

cityvalue=$("#city").val();  //取值

$("#area").empty(); //清空上次的值

$("#area").css("display","inline"); //顯現

$.ajax({

url:'https://raw.githubusercontent.com/donma/TaiwanAddressCityAreaRoadChineseEnglishJSON/master/CityCountyData.json',

type:"get",

dataType:"json",

success:function(data){

eachval=data[cityvalue].AreaList; //鄉鎮

$.each(eachval,function(key,value){

$('#area').append('<option value="'+key+'">'+eachval[key].AreaName+'</option>')

error:function(){

alert("fail");

//選完後跳出選擇值

$("#area").change(function(){

cityvalue=$("#city").val();  //縣市

areavalue=$("#area").val();  //鄉鎮

$.ajax({

url:'https://raw.githubusercontent.com/donma/TaiwanAddressCityAreaRoadChineseEnglishJSON/master/CityCountyData.json',

type:"get",

dataType:"json",

success:function(data){

alert(data[cityvalue].CityName+"-"+data[cityvalue].AreaList[areavalue].AreaName);

error:function(){

alert("fail");

</script>

通過本文的學習,我們成功地實現了一個互動式的網頁下拉選單,讓使用者能夠輕鬆選擇台灣縣市和鄉鎮。這展示了JQuery和Ajax技術在提升網頁使用者體驗方面的威力。經過這次實作,你已經熟悉了如何使用JQuery的選擇器來操作DOM元素,以及如何使用Ajax來處理網頁的非同步請求。

現在,你可以將這些知識應用於更多有趣的專案,打造更多創意的互動元素,讓你的網頁更加生動有趣。

📖 延伸閱讀: 不用寫程式,也可以製作兩層以上連動的下拉式選單

👉 我也想成為工程師 👈

FB粉絲團: https://www.facebook.com/lccnetzone
YouTube頻道: https://www.youtube.com/user/LccnetTaiwan

痞客邦Blog: http://lccnetvip.pixnet.net/blog