网站首页 > 技术文章 正文
后台列表页最常见的需求:点击表头排序 + 一键全选。本文用原生js代码实现零依赖方案,涵盖 DOM 查询、排序算法、事件代理三大核心技能。
效果速览
一、核心思路
- 事件入口:为每个 <th> 绑定点击,首列是复选框,直接 return
- 排序函数:把 NodeList 转成数组,利用 sort + localeCompare 处理中文
- 复选联动:全选按钮用事件冒泡阻止,单行用计数器实时同步
二、代码拆解
1.元素骨架
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.复选联动
// 全选
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))
);
三、边界与扩展
- 排序状态记忆:给 <th> 加 data-order 实现升降切换。
- 多选过滤:把排序结果同步给 filter 即可实现搜索 + 排序。
- 键盘支持:keydown 监听 Enter 或 Space 触发排序。
- 上一篇: 能提高编码效率的8个JS语法微调小技巧
- 下一篇:已经是最后一篇了
猜你喜欢
- 2025-09-23 能提高编码效率的8个JS语法微调小技巧
- 2025-09-23 Vue 3 快速 Diff_vue3 ref dom
- 2025-09-23 深入 Vue v-model_深入浅出电影在线观看完整版
- 2025-09-23 从双端到快速:Vue 3 Diff 的进化之路
- 2024-12-19 this is a test This is a test message.
- 2024-12-19 写给前端同学的Nginx配置指南 前端nginx 配置详解
- 2024-12-19 web前端开发 | 对小程序的理解及分包
- 2024-12-19 汽车大灯灯泡前有黑色的东西,会不会影响行车安全
- 2024-12-19 开源旅游小程序-前端+后端程序,源码开放,支持二次开发
- 2024-12-19 H5小游戏开发教程之基础项目搭建 h5小游戏制作软件
你 发表评论:
欢迎- 最近发表
- 标签列表
-
- 前端设计模式 (75)
- 前端性能优化 (51)
- 前端模板 (66)
- 前端跨域 (52)
- 前端缓存 (63)
- 前端aes加密 (58)
- 前端脚手架 (56)
- 前端md5加密 (54)
- 前端路由 (61)
- 前端数组 (73)
- 前端js面试题 (50)
- 前端定时器 (59)
- Oracle RAC (76)
- oracle恢复 (77)
- oracle 删除表 (52)
- oracle 用户名 (80)
- oracle 工具 (55)
- oracle 内存 (55)
- oracle 导出表 (62)
- oracle约束 (54)
- oracle 中文 (51)
- oracle链接 (54)
- oracle的函数 (58)
- oracle面试 (55)
- 前端调试 (52)
本文暂时没有评论,来添加一个吧(●'◡'●)