【前端小練習】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
工程師的詩意午後
10會員
34內容數
在這裡,我讓程式碼與詩意共存, 生活不只有規則與邏輯,也有感受與想像, 有時是寫程式時的靈感,有時是半夜裡的一首詩, 願這些文字,帶給你一點溫度。
你可能也想看
Thumbnail
在小小的租屋房間裡,透過蝦皮購物平臺採購各種黏土、模型、美甲材料等創作素材,打造專屬黏土小宇宙的療癒過程。文中分享多個蝦皮挖寶地圖,並推薦蝦皮分潤計畫。
Thumbnail
在小小的租屋房間裡,透過蝦皮購物平臺採購各種黏土、模型、美甲材料等創作素材,打造專屬黏土小宇宙的療癒過程。文中分享多個蝦皮挖寶地圖,並推薦蝦皮分潤計畫。
Thumbnail
小蝸和小豬因購物習慣不同常起衝突,直到發現蝦皮分潤計畫,讓小豬的購物愛好產生價值,也讓小蝸開始欣賞另一半的興趣。想增加收入或改善伴侶間的購物觀念差異?讓蝦皮分潤計畫成為你們的神隊友吧!
Thumbnail
小蝸和小豬因購物習慣不同常起衝突,直到發現蝦皮分潤計畫,讓小豬的購物愛好產生價值,也讓小蝸開始欣賞另一半的興趣。想增加收入或改善伴侶間的購物觀念差異?讓蝦皮分潤計畫成為你們的神隊友吧!
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