昨天我們學會了用 fetch() 呼叫 API、把遠端的資料抓回來。但當時我們只是把資料乖乖印在主控台(Console)的黑盒子裡,使用者根本看不見啊!
今天,我們就要把前面的大絕招全部串在一起:把 API 抓到的資料透過迴圈跟 DOM,動態變成網頁上一張張精美的卡片!
想像一下你在設計電商網站時的流程:
我們用免費公開的使用者列表 API 來示範如何把多筆資料動態顯示在畫面上:
HTML 結構(準備一個放卡片的容器):
<div class="container">
<h2>即時會員名單</h2>
<!-- 之後 JS 抓到的卡片都會被塞進這個容器裡 -->
<div id="user-card-list" class="card-grid"></div>
</div>
JavaScript 串接與動態生成邏輯:
// 1. 抓取畫面的卡片容器
const cardContainer = document.querySelector('#user-card-list');
// 2. 宣告一個非同步函式來抓資料並渲染
async function loadUsers() {
try {
// 從公開 API 抓取 5 位使用者的資料
const response = await fetch('https://jsonplaceholder.typicode.com/users');
const users = await response.json();
// 3. 用迴圈(或 .forEach)把陣列裡的每個人抓出來
users.forEach(function(user) {
// 針對每個人,動態建立一個卡片 div
const card = document.createElement('div');
card.classList.add('user-card'); // 加上 CSS 樣式類別
// 把使用者的名字跟信箱寫進卡片結構裡
card.innerHTML = `
<h3>${user.name}</h3>
<p>電子郵件:${user.email}p>
<p>居住城市:${user.address.city}</p>
`;
// 4. 把這張做好的卡片塞進大容器裡!
cardContainer.appendChild(card);
});
} catch (error) {
console.log("資料載入失敗:", error);
}
}
// 網頁一載動就執行這支函式
loadUsers();
這段程式碼幾乎涵蓋了現代前端工程的精髓:
今天我們把 Fetch API、迴圈、與 DOM 動態生成 完美結合,做出了會自己長出內容的卡片清單。這已經完全具備現代網頁應用程式(Web App)的雛形了!
掌握了資料渲染後,明天我們要來聊聊當使用者在網站上輸入關鍵字時,怎麼做一個即時的搜尋與過濾功能!