【前端小練習】HTML + CSS + JS 表格練習:搜尋與排序功能

更新 發佈閱讀 7 分鐘
raw-image

這個表格會有以下功能:

  1. 基本表格(顯示姓名、年齡、職業)
  2. CSS 美化(加上邊框、hover 效果、標題底色)
  3. JS 搜尋(可以輸入文字快速篩選)
  4. JS 排序(點欄位標題可以排序)

HTML

<!DOCTYPE html>
<html lang="zh-Hant">
<head>
<meta charset="UTF-8">
<title>表格練習</title>
<link rel="stylesheet" href="style.css">
</head>
<body>
<h2>表格練習:搜尋 & 排序</h2>

<!-- 搜尋框 -->
<input type="text" id="searchInput" placeholder="輸入關鍵字搜尋...">

<!-- 表格 -->
<table id="dataTable">
<thead>
<tr>
<th onclick="sortTable(0)">姓名 ⬍</th>
<th onclick="sortTable(1)">年齡 ⬍</th>
<th onclick="sortTable(2)">職業 ⬍</th>
</tr>
</thead>
<tbody>
<tr><td>小明</td><td>25</td><td>工程師</td></tr>
<tr><td>小美</td><td>30</td><td>設計師</td></tr>
<tr><td>阿強</td><td>28</td><td>老師</td></tr>
<tr><td>小華</td><td>22</td><td>學生</td></tr>
<tr><td>大雄</td><td>35</td><td>醫生</td></tr>
</tbody>
</table>

<script src="script.js"></script>
</body>
</html>


CSS (style.css)

body {
font-family: "Microsoft JhengHei", sans-serif;
padding: 20px;
background: #f9f9f9;
}

h2 {
color: #333;
}

#searchInput {
margin-bottom: 10px;
padding: 6px;
width: 250px;
border: 1px solid #ccc;
border-radius: 5px;
}

table {
width: 100%;
border-collapse: collapse;
background: #fff;
box-shadow: 0 2px 6px rgba(0,0,0,0.1);
}

th, td {
border: 1px solid #ddd;
padding: 12px;
text-align: center;
}

th {
background-color: #4CAF50;
color: white;
cursor: pointer;
}

tr:hover {
background-color: #f1f1f1;
}


JavaScript (script.js)

// 搜尋功能
document.getElementById("searchInput").addEventListener("keyup", function () {
let filter = this.value.toLowerCase();
let rows = document.querySelectorAll("#dataTable tbody tr");

rows.forEach(row => {
let text = row.textContent.toLowerCase();
row.style.display = text.includes(filter) ? "" : "none";
});
});

// 排序功能
function sortTable(n) {
let table = document.getElementById("dataTable");
let rows = Array.from(table.rows).slice(1); // 排除標題列
let isAscending = table.getAttribute("data-sort-dir") === "asc";
let dir = isAscending ? -1 : 1;

rows.sort((a, b) => {
let x = a.cells[n].innerText;
let y = b.cells[n].innerText;

// 如果是數字欄位,用數字比較
return isNaN(x) || isNaN(y) ? x.localeCompare(y, "zh-Hant") * dir : (x - y) * dir;
});

rows.forEach(r => table.tBodies[0].appendChild(r));
table.setAttribute("data-sort-dir", isAscending ? "desc" : "asc");
}


畫面展示

raw-image

搜尋

raw-image
















留言
avatar-img
工程師的詩意午後
13會員
43內容數
在這裡,程式和生活一起呼吸, 靈感可能來自一段程式碼,也可能來自深夜的一句話, 希望這些分享,都能陪你走一小段,帶來一點暖意。
你可能也想看
Thumbnail
vocus 慶祝推出 App,舉辦 2026 全站慶。推出精選內容與數位商品折扣,訂單免費與紅包抽獎、新註冊會員專屬活動、Boba Boost 贊助抽紅包,以及全站徵文,並邀請你一起來回顧過去的一年, vocus 與創作者共同留下了哪些精彩創作。
Thumbnail
vocus 慶祝推出 App,舉辦 2026 全站慶。推出精選內容與數位商品折扣,訂單免費與紅包抽獎、新註冊會員專屬活動、Boba Boost 贊助抽紅包,以及全站徵文,並邀請你一起來回顧過去的一年, vocus 與創作者共同留下了哪些精彩創作。
Thumbnail
CSS 是控制網頁外觀的語言,應用於網頁設計、UI/UX 設計、電子商務和移動應用開發。主要使用者包括前端開發者、UI/UX 設計師和網頁設計師。CSS 的特性有樣式控制、層疊優先級、響應式設計及分離內容與樣式。
Thumbnail
CSS 是控制網頁外觀的語言,應用於網頁設計、UI/UX 設計、電子商務和移動應用開發。主要使用者包括前端開發者、UI/UX 設計師和網頁設計師。CSS 的特性有樣式控制、層疊優先級、響應式設計及分離內容與樣式。
Thumbnail
🎗️本次主題成果展示:人力資訊分析 上集回顧 🔗EXCEL儀表板 | 人力資訊分析儀表板 #1 | 上手等級:入門🔗 🔗EXCEL儀表板 | 人力資訊分析儀表板 #2 | 上手等級:入門🔗 🔗EXCEL儀表板 | 人力資訊分析儀表板 #3 | 上手等級:入門🔗 🔗E
Thumbnail
🎗️本次主題成果展示:人力資訊分析 上集回顧 🔗EXCEL儀表板 | 人力資訊分析儀表板 #1 | 上手等級:入門🔗 🔗EXCEL儀表板 | 人力資訊分析儀表板 #2 | 上手等級:入門🔗 🔗EXCEL儀表板 | 人力資訊分析儀表板 #3 | 上手等級:入門🔗 🔗E
Thumbnail
你好,在下最近在學習開發web,學了html css js,也得出一些心得,由於網路上已有許多教學,所以我會著重在如何開發出to do List,以及解釋我寫的程式碼。相關的教學我會直接貼網址。如果我有什麼地方出錯,或者是可以寫得更好,歡迎在下方留言,討論。 首先先介紹我的開發環境: 我用了vs
Thumbnail
你好,在下最近在學習開發web,學了html css js,也得出一些心得,由於網路上已有許多教學,所以我會著重在如何開發出to do List,以及解釋我寫的程式碼。相關的教學我會直接貼網址。如果我有什麼地方出錯,或者是可以寫得更好,歡迎在下方留言,討論。 首先先介紹我的開發環境: 我用了vs
Thumbnail
🎗️本次主題成果展示:人力資訊分析 上集回顧 🔗EXCEL儀表板 | 人力資訊分析儀表板 #1 | 上手等級:入門🔗 🔗EXCEL儀表板 | 人力資訊分析儀表板 #2 | 上手等級:入門🔗 🔗EXCEL儀表板 | 人力資訊分析儀表板 #3 | 上手等級:入門🔗
Thumbnail
🎗️本次主題成果展示:人力資訊分析 上集回顧 🔗EXCEL儀表板 | 人力資訊分析儀表板 #1 | 上手等級:入門🔗 🔗EXCEL儀表板 | 人力資訊分析儀表板 #2 | 上手等級:入門🔗 🔗EXCEL儀表板 | 人力資訊分析儀表板 #3 | 上手等級:入門🔗
Thumbnail
🎗️本次主題成果展示:人力資訊分析 上集回顧 🔗EXCEL儀表板 | 人力資訊分析儀表板 #1 | 上手等級:入門🔗 🔗EXCEL儀表板 | 人力資訊分析儀表板 #2 | 上手等級:入門🔗 ♐人力資訊儀表板分集 本次人力資訊儀錶板預計分成5集依循漸進逐步完成 資料整
Thumbnail
🎗️本次主題成果展示:人力資訊分析 上集回顧 🔗EXCEL儀表板 | 人力資訊分析儀表板 #1 | 上手等級:入門🔗 🔗EXCEL儀表板 | 人力資訊分析儀表板 #2 | 上手等級:入門🔗 ♐人力資訊儀表板分集 本次人力資訊儀錶板預計分成5集依循漸進逐步完成 資料整
Thumbnail
利用文字紀錄,明確寫下自己的採購項目......
Thumbnail
利用文字紀錄,明確寫下自己的採購項目......
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News