---
# System prepended metadata

title: 軟體工程師體驗營 南8組 --- 第 4 週討論區

---

# 軟體工程師體驗營 南8組 --- 第 4 週討論區 

## 問題
請提交 Codepen 連結

| 組員 | Codepen |
| :----: | :------: |
| +7#8492 | |
| 135144365#3152 | |
| Jacky7035#9423 | [Codepen](https://codepen.io/adens123/pen/wvYOGPZ) |
| Kulimusoda#2785 | [Codepen](https://codepen.io/yuch3n_chen/pen/ExdzyXX) |
| SKey#9905 | [Codepen](https://codepen.io/Dale-Chien/pen/LYgvLMM) |
| 銀光菇#1692 | [Codepen](https://codepen.io/genesynthesis/pen/zYmXjwM) |
| Ligma johnson ㍿#8951 |  |
| mangotreeeee#7431 |  |
| Xiang#5058 |  |


### 第一題 串接臺南市國小各校人數統計
API 資料：[https://data.tainan.gov.tw/dataset/pimary-number-people/resource/3b3e2b37-cbce-49ba-aba6-7f3d5fa8bec9](https://data.tainan.gov.tw/dataset/pimary-number-people/resource/3b3e2b37-cbce-49ba-aba6-7f3d5fa8bec9)

使用 axios 套件做資料串接，並 console.log() 拿到 data 內的資料。

    
### 第二題 承上題
1. 臺南市總共有幾個國小？
2. 大甲國小有多少學生？

![](https://hackmd.io/_uploads/S1KzeDxL3.png)



## 討論紀錄
Jacky7035#9423、 SKey#9905提供程式碼
HTML部分
```html
<h1>臺南市國小各校人數統計</h1>

<h2>台南市國小總數量：<span class="schoolTotal"></span></h2>

<h2>各校人數查詢</h2>
<label for="">請選擇學校(可用關鍵字查詢)：<input type="text" list="schoolList" name="school" class="selected"></label>
<datalist id="schoolList" class="schoolList">
</datalist>
<p class="result"></p>

<script src="https://cdnjs.cloudflare.com/ajax/libs/axios/1.4.0/axios.min.js"></script>
```
CSS部分
```css
.schoolTotal {
  color: blue;
  border: 4px dashed pink;
}

.result {
  color: blue;
  font-weight: bold;
  font-size: 1.5rem;
}
```
JS部分
```javascript
let data;

// 取資料
async function getData() {
  try{
    const rawData = await axios.get("https://soa.tainan.gov.tw/Api/Service/Get/b1054400-86a4-40fa-aea0-fb39fce361e2");
    const data = rawData.data.data;     
    data.forEach((item) => (item.school = item.school.trim()));
    return data;
  } catch(e) {
    console.log(e);
  } 
} 

// 渲染國小數量和下拉選單選項
function render(){
  const schoolLength = data.length;
  const schoolTotal = document.querySelector(".schoolTotal");
  const schoolList = document.querySelector(".schoolList");  
  
  schoolTotal.innerText = `${schoolLength}間學校`;
  
  data.forEach((item)=>{
    const newOption = document.createElement("option");
    newOption.value = item.school;
    schoolList.appendChild(newOption);
  });
}

// 選擇學校加上監聽事件
function schoolChange(){
  const selected = document.querySelector(".selected");
  selected.addEventListener("change", (e)=>{    
   data.forEach(item => {
     if(item.school == e.target.value ){
       const result = document.querySelector(".result");
       result.textContent = `${e.target.value}國小人數為：${item.num}人`;   
     }
   });
  });  
}

// 網頁載入時初始化項目
async function init(){
  data = await getData();  
  render();
  schoolChange();  
}

init();
```

## 討論圖片
![](https://hackmd.io/_uploads/r1RFXvxUh.png)

![](https://hackmd.io/_uploads/r1-2EveUh.png)

![](https://hackmd.io/_uploads/BkRtLvxLn.png)


