【前端小練習】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
留言分享你的想法!
avatar-img
工程師的詩意午後
9會員
31內容數
在這裡,我讓程式碼與詩意共存, 生活不只有規則與邏輯,也有感受與想像, 有時是寫程式時的靈感,有時是半夜裡的一首詩, 願這些文字,帶給你一點溫度。
你可能也想看
Thumbnail
2025 vocus 推出最受矚目的活動之一——《開箱你的美好生活》,我們跟著創作者一起「開箱」各種故事、景點、餐廳、超值好物⋯⋯甚至那些讓人會心一笑的生活小廢物;這次活動不僅送出了許多獎勵,也反映了「內容有價」——創作不只是分享、紀錄,也能用各種不同形式變現、帶來實際收入。
Thumbnail
2025 vocus 推出最受矚目的活動之一——《開箱你的美好生活》,我們跟著創作者一起「開箱」各種故事、景點、餐廳、超值好物⋯⋯甚至那些讓人會心一笑的生活小廢物;這次活動不僅送出了許多獎勵,也反映了「內容有價」——創作不只是分享、紀錄,也能用各種不同形式變現、帶來實際收入。
Thumbnail
嗨!歡迎來到 vocus vocus 方格子是台灣最大的內容創作與知識變現平台,並且計畫持續拓展東南亞等等國際市場。我們致力於打造讓創作者能夠自由發表、累積影響力並獲得實質收益的創作生態圈!「創作至上」是我們的核心價值,我們致力於透過平台功能與服務,賦予創作者更多的可能。 vocus 平台匯聚了
Thumbnail
嗨!歡迎來到 vocus vocus 方格子是台灣最大的內容創作與知識變現平台,並且計畫持續拓展東南亞等等國際市場。我們致力於打造讓創作者能夠自由發表、累積影響力並獲得實質收益的創作生態圈!「創作至上」是我們的核心價值,我們致力於透過平台功能與服務,賦予創作者更多的可能。 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
利用文字紀錄,明確寫下自己的採購項目......
Thumbnail
本文介紹瞭如何寫 HTML 標籤,製作一個簡單的自我介紹網頁。透過介紹寫標籤的實例,讓讀者能夠更瞭解如何在 HTML 中使用不同的標籤。
Thumbnail
本文介紹瞭如何寫 HTML 標籤,製作一個簡單的自我介紹網頁。透過介紹寫標籤的實例,讓讀者能夠更瞭解如何在 HTML 中使用不同的標籤。
Thumbnail
這邊統整了所有過去發表過關於 QUERY 函式的教學分享,希望可以方便你按照順序閱讀和練習。 QUERY 可以用來查詢、篩選、聚集、排序資料,還可以做張簡易的資料透視表,是我在 Google 試算表上做數據分析、製作報告、製作儀表板時最常用的函式之一,既方便又好用,誠心推薦!
Thumbnail
這邊統整了所有過去發表過關於 QUERY 函式的教學分享,希望可以方便你按照順序閱讀和練習。 QUERY 可以用來查詢、篩選、聚集、排序資料,還可以做張簡易的資料透視表,是我在 Google 試算表上做數據分析、製作報告、製作儀表板時最常用的函式之一,既方便又好用,誠心推薦!
Thumbnail
今天紀錄的是因應工作需要而學習的小技能。 我想達到的目標:當欄位裡面出現「寄出」這個關鍵字的時候整欄變色,以辨別該項目的狀態。
Thumbnail
今天紀錄的是因應工作需要而學習的小技能。 我想達到的目標:當欄位裡面出現「寄出」這個關鍵字的時候整欄變色,以辨別該項目的狀態。
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News