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

更新 發佈閱讀 7 分鐘
vocus|新世代的創作平台

這個表格會有以下功能:

  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");
}


畫面展示

vocus|新世代的創作平台

搜尋

vocus|新世代的創作平台
















留言
avatar-img
工程師的詩意午後
12會員
44內容數
在這裡,程式和生活一起呼吸, 靈感可能來自一段程式碼,也可能來自深夜的一句話, 希望這些分享,都能陪你走一小段,帶來一點暖意。
你可能也想看
Thumbnail
5 月將於臺北表演藝術中心映演的「2026 北藝嚴選」《海妲・蓋柏樂》,由臺灣劇團「晃晃跨幅町」製作,本文將以從舞台符號、聲音與表演調度切入,討論海妲・蓋柏樂在父權社會結構下的困境,並結合榮格心理學與馮.法蘭茲對「阿尼姆斯」與「永恆少年」原型的分析,理解女人何以走向精神性的操控、毀滅與死亡。
Thumbnail
5 月將於臺北表演藝術中心映演的「2026 北藝嚴選」《海妲・蓋柏樂》,由臺灣劇團「晃晃跨幅町」製作,本文將以從舞台符號、聲音與表演調度切入,討論海妲・蓋柏樂在父權社會結構下的困境,並結合榮格心理學與馮.法蘭茲對「阿尼姆斯」與「永恆少年」原型的分析,理解女人何以走向精神性的操控、毀滅與死亡。
Thumbnail
🎗️本次主題成果展示:人力資訊分析 上集回顧 🔗EXCEL儀表板 | 人力資訊分析儀表板 #1 | 上手等級:入門🔗 🔗EXCEL儀表板 | 人力資訊分析儀表板 #2 | 上手等級:入門🔗 ♐人力資訊儀表板分集 本次人力資訊儀錶板預計分成5集依循漸進逐步完成 資料整
Thumbnail
🎗️本次主題成果展示:人力資訊分析 上集回顧 🔗EXCEL儀表板 | 人力資訊分析儀表板 #1 | 上手等級:入門🔗 🔗EXCEL儀表板 | 人力資訊分析儀表板 #2 | 上手等級:入門🔗 ♐人力資訊儀表板分集 本次人力資訊儀錶板預計分成5集依循漸進逐步完成 資料整
Thumbnail
本文介紹瞭如何寫 HTML 標籤,製作一個簡單的自我介紹網頁。透過介紹寫標籤的實例,讓讀者能夠更瞭解如何在 HTML 中使用不同的標籤。
Thumbnail
本文介紹瞭如何寫 HTML 標籤,製作一個簡單的自我介紹網頁。透過介紹寫標籤的實例,讓讀者能夠更瞭解如何在 HTML 中使用不同的標籤。
Thumbnail
本文分析導演巴里・柯斯基(Barrie Kosky)如何運用極簡的舞臺配置,將布萊希特(Bertolt Brecht)的「疏離效果」轉化為視覺奇觀與黑色幽默,探討《三便士歌劇》在當代劇場中的新詮釋,並藉由舞臺、燈光、服裝、音樂等多方面,分析該作如何在保留批判核心的同時,觸及觀眾的觀看位置與人性幽微。
Thumbnail
本文分析導演巴里・柯斯基(Barrie Kosky)如何運用極簡的舞臺配置,將布萊希特(Bertolt Brecht)的「疏離效果」轉化為視覺奇觀與黑色幽默,探討《三便士歌劇》在當代劇場中的新詮釋,並藉由舞臺、燈光、服裝、音樂等多方面,分析該作如何在保留批判核心的同時,觸及觀眾的觀看位置與人性幽微。
Thumbnail
背景:從冷門配角到市場主線,算力與電力被重新定價   小P從2008進入股市,每一個時期的投資亮點都不同,記得2009蘋果手機剛上市,當時蘋果只要在媒體上提到哪一間供應鏈,隔天股價就有驚人的表現,當時光學鏡頭非常熱門,因為手機第一次搭上鏡頭可以拍照,也造就傳統相機廠的殞落,如今手機已經全面普及,題
Thumbnail
背景:從冷門配角到市場主線,算力與電力被重新定價   小P從2008進入股市,每一個時期的投資亮點都不同,記得2009蘋果手機剛上市,當時蘋果只要在媒體上提到哪一間供應鏈,隔天股價就有驚人的表現,當時光學鏡頭非常熱門,因為手機第一次搭上鏡頭可以拍照,也造就傳統相機廠的殞落,如今手機已經全面普及,題
Thumbnail
這是一場修復文化與重建精神的儀式,觀眾不需要完全看懂《遊林驚夢:巧遇Hagay》,但你能感受心與土地團聚的渴望,也不急著在此處釐清或定義什麼,但你的在場感受,就是一條線索,關於如何找著自己的路徑、自己的聲音。
Thumbnail
這是一場修復文化與重建精神的儀式,觀眾不需要完全看懂《遊林驚夢:巧遇Hagay》,但你能感受心與土地團聚的渴望,也不急著在此處釐清或定義什麼,但你的在場感受,就是一條線索,關於如何找著自己的路徑、自己的聲音。
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
利用文字紀錄,明確寫下自己的採購項目......
Thumbnail
利用文字紀錄,明確寫下自己的採購項目......
Thumbnail
CSS 是控制網頁外觀的語言,應用於網頁設計、UI/UX 設計、電子商務和移動應用開發。主要使用者包括前端開發者、UI/UX 設計師和網頁設計師。CSS 的特性有樣式控制、層疊優先級、響應式設計及分離內容與樣式。
Thumbnail
CSS 是控制網頁外觀的語言,應用於網頁設計、UI/UX 設計、電子商務和移動應用開發。主要使用者包括前端開發者、UI/UX 設計師和網頁設計師。CSS 的特性有樣式控制、層疊優先級、響應式設計及分離內容與樣式。
Thumbnail
🎗️本次主題成果展示:人力資訊分析 上集回顧 🔗EXCEL儀表板 | 人力資訊分析儀表板 #1 | 上手等級:入門🔗 🔗EXCEL儀表板 | 人力資訊分析儀表板 #2 | 上手等級:入門🔗 🔗EXCEL儀表板 | 人力資訊分析儀表板 #3 | 上手等級:入門🔗
Thumbnail
🎗️本次主題成果展示:人力資訊分析 上集回顧 🔗EXCEL儀表板 | 人力資訊分析儀表板 #1 | 上手等級:入門🔗 🔗EXCEL儀表板 | 人力資訊分析儀表板 #2 | 上手等級:入門🔗 🔗EXCEL儀表板 | 人力資訊分析儀表板 #3 | 上手等級:入門🔗
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News