利用JavaScript實現(xiàn)動態(tài)表格功能實例
更新時間:2026年03月09日 10:58:43 作者:技術喵貓巷
在現(xiàn)代網(wǎng)頁開發(fā)中,表格是展示數(shù)據(jù)的常用元素,無論是數(shù)據(jù)統(tǒng)計、信息展示還是數(shù)據(jù)錄入,表格都能以整齊的格式展示出大量信息,這篇文章主要介紹了利用JavaScript實現(xiàn)動態(tài)表格功能的相關資料,需要的朋友可以參考下
后臺列表頁最常見的需求:點擊表頭排序 + 一鍵全選。本文用原生js代碼實現(xiàn)零依賴方案,涵蓋 DOM 查詢、排序算法、事件代理三大核心技能。
效果速覽

一、核心思路
- 事件入口:為每個
<th>綁定點擊,首列是復選框,直接return - 排序函數(shù):把
NodeList轉成數(shù)組,利用sort+localeCompare處理中文 - 復選聯(lián)動:全選按鈕用事件冒泡阻止,單行用計數(shù)器實時同步
二、代碼拆解
1.元素骨架
<table class="table-container" width="400">
<thead>
<tr>
<th>
<input class="checkAll" type="checkbox">
</th>
<th>編號</th>
<th>姓名</th>
<th>年齡</th>
<th>職位</th>
</tr>
</thead>
<tbody>
<tr>
<td>
<input type="checkbox">
</td>
<td>3</td>
<td>王同學</td>
<td>24</td>
<td>C++程序員</td>
</tr>
<tr>
<td>
<input type="checkbox">
</td>
<td>5</td>
<td>張同學</td>
<td>24</td>
<td>WEB前端</td>
</tr>
<tr>
<td>
<input type="checkbox">
</td>
<td>22</td>
<td>瑪麗</td>
<td>30</td>
<td>測試員</td>
</tr>
<tr>
<td>
<input type="checkbox">
</td>
<td>6</td>
<td>艾倫</td>
<td>21</td>
<td>交互設計師</td>
</tr>
<tr>
<td>
<input type="checkbox">
</td>
<td>17</td>
<td>小明同學</td>
<td>28</td>
<td>PHP工程師</td>
</tr>
</tbody>
</table>
2.排序邏輯
const arr = Array.prototype.slice.call(rows).sort((a, b) => {
const textA = a.cells[index].innerText;
const textB = b.cells[index].innerText;
return index === 2 || index === 4
? textA.localeCompare(textB, 'zh')
: Number(textA) - Number(textB);
});
arr.forEach(tr => tbody.appendChild(tr)); // DOM 移動,無需刪除再插入
3.復選聯(lián)動
// 全選
checkAll.onclick = e => {
e.stopPropagation();
checkOneList.forEach(cb => cb.checked = checkAll.checked);
};
// 單行
checkOneList.forEach(cb =>
cb.onclick = () =>
(checkAll.checked =
Array.from(checkOneList).every(c => c.checked))
);
三、邊界與擴展
- 排序狀態(tài)記憶:給
<th>加data-order實現(xiàn)升降切換 - 多選過濾:把排序結果同步給
filter即可實現(xiàn)搜索 + 排序 - 鍵盤支持:
keydown監(jiān)聽 Enter 或 Space 觸發(fā)排序
到此這篇關于利用JavaScript實現(xiàn)動態(tài)表格功能的文章就介紹到這了,更多相關JS動態(tài)表格內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
PHP實現(xiàn)基于Redis的MessageQueue隊列封裝操作示例
這篇文章主要介紹了PHP實現(xiàn)基于Redis的MessageQueue隊列封裝操作,結合實例形式分析了Redis的PHP消息隊列封裝與使用相關操作技巧,需要的朋友可以參考下2019-02-02
用js將long型數(shù)據(jù)轉換成date型或datetime型的實例
下面小編就為大家?guī)硪黄胘s將long型數(shù)據(jù)轉換成date型或datetime型的實例。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2017-07-07
詳解微信小程序實現(xiàn)仿微信聊天界面(各種細節(jié)處理)
這篇文章主要介紹了詳解微信小程序實現(xiàn)仿微信聊天界面(各種細節(jié)處理),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2019-02-02
JavaScript中使用構造器創(chuàng)建對象無需new的情況說明
JS中創(chuàng)建對象可以直接使用直接量的方式,這里討論的是定義一個構造器(function)的情況2012-03-03

