iT邦幫忙

第 12 屆 iThome 鐵人賽

DAY 29
0
自我挑戰組

每天一份前端小作品系列 第 29

【Day29】綜合練習:台鐵即時時刻表(1/2)

  • 分享至 

  • xImage
  •  

本日小作品:
https://codepen.io/linchinhsuan/pen/OJXVgdo

重點摘要:

var city = [.......];
var sations = [[],[].......];

台灣每個縣市的資料和每個縣市的車站資料。

var cityBtn = document.querySelector(".city");
var areaBtn = document.getElementById("area");
for(let i=0;i<city.length;i++){
    var option = document.createElement("option");
    option.value = city[i];
    option.dataset.num = i;
    option.textContent = city[i];
    cityBtn.appendChild(option);
}

選到那兩個select(一個是縣市一個是車站),接著跑for迴圈,用document.createElement()語法動態將縣市select裡面的option創造出來。新增了其value和textContent等等內容,最後再用appendChild()語法新增到縣市select底下。

cityBtn.addEventListener("change",function(e){
    areaBtn.innerHTML = '<option value="" selected>請選擇車站</option>';
    var option = document.querySelectorAll(".city option");
    for(let i=0;i<option.length;i++){
        if(option[i].selected){
            var num = option[i].dataset.num;
            var citySation = sations[num];
            for(let i=0;i<citySation.length;i++){
                var option = document.createElement("option");
                option.value = citySation[i];
                option.textContent = citySation[i];
                areaBtn.appendChild(option);
            }
        }
    }
},false);

在縣市的select上面綁定change事件,當使用者選擇了縣市,就會跑一個for迴圈,逐筆去比對哪個option被選到,接著把對應編號的車站用for迴圈寫到車站的select裡面。

---

本日結語:
今天是二十九天,進入了最後兩天!今天是做台鐵即時時刻表的表面部分,不過這樣也預告了明天,也就是鐵人賽第三十天的最終小作品是什麼了——沒錯就是一個用AJAX即時顯示查詢結果的台鐵時刻表網站!

如有寫錯之處麻煩各路高手指教><


上一篇
【Day28】綜合練習:視差滾動之鐵人小檔案
下一篇
【Day30】綜合練習:台鐵即時時刻表!
系列文
每天一份前端小作品30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言