当前位置: 首页 > news >正文

html+js实现表格本地筛选

以下是基于JavaScript实现的表格本地筛选解决方案,综合多个高可信度资源优化而成:


<!DOCTYPE html>
<html lang="zh-CN">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>表格本地筛选系统</title><style>body {font-family: 'Segoe UI', Arial, sans-serif;margin: 20px;background-color: #f5f7fa;}.filter-container {background: white;padding: 15px;border-radius: 8px;box-shadow: 0 2px 10px rgba(0,0,0,0.1);margin-bottom: 20px;}#filterInput {width: 100%;padding: 12px 20px;margin: 8px 0;border: 1px solid #ddd;border-radius: 4px;font-size: 16px;background-image: url('data:image/svg+xml;utf8,<svg fill="%23999" height="24" viewBox="0 0 24 24" width="24" xmlns="http://www.w3.org/2000/svg"><path d="M15.5 14h-.79l-.28-.27C15.41 12.59 16 11.11 16 9.5 16 5.91 13.09 3 9.5 3S3 5.91 3 9.5 5.91 16 9.5 16c1.61 0 3.09-.59 4.23-1.57l.27.28v.79l5 4.99L20.49 19l-4.99-5zm-6 0C7.01 14 5 11.99 5 9.5S7.01 5 9.5 5 14 7.01 14 9.5 11.99 14 9.5 14z"/></svg>');background-repeat: no-repeat;background-position: 10px center;padding-left: 40px;}#dataTable {border-collapse: collapse;width: 100%;background: white;border-radius: 8px;overflow: hidden;box-shadow: 0 2px 10px rgba(0,0,0,0.1);}#dataTable th, #dataTable td {border: 1px solid #e0e0e0;padding: 12px;text-align: left;}#dataTable th {background-color: #4a6fa5;color: white;position: sticky;top: 0;}#dataTable tr:nth-child(even) {background-color: #f8f9fa;}#dataTable tr:hover {background-color: #e9ecef;}.no-results {text-align: center;padding: 20px;color: #666;font-style: italic;}</style>
</head>
<body><div class="filter-container"><input type="text" id="filterInput" placeholder="输入关键字筛选表格..." title="支持多列搜索"><div class="column-selector"><label><input type="checkbox" name="searchColumns" value="0" checked> 姓名</label><label><input type="checkbox" name="searchColumns" value="1" checked> 年龄</label><label><input type="checkbox" name="searchColumns" value="2" checked> 城市</label></div></div><table id="dataTable"><thead><tr><th>姓名</th><th>年龄</th><th>城市</th><th>职业</th></tr></thead><tbody><tr><td>张三</td><td>28</td><td>北京</td><td>工程师</td></tr><tr><td>李四</td><td>32</td><td>上海</td><td>设计师</td></tr><tr><td>王五</td><td>25</td><td>广州</td><td>教师</td></tr><tr><td>赵六</td><td>40</td><td>深圳</td><td>医生</td></tr><tr><td>钱七</td><td>22</td><td>杭州</td><td>学生</td></tr></tbody></table><script>document.addEventListener('DOMContentLoaded', function() {const filterInput = document.getElementById('filterInput');const table = document.getElementById('dataTable');const rows = table.getElementsByTagName('tr');const columnCheckboxes = document.querySelectorAll('input[name="searchColumns"]');// 添加无结果提示行const noResultsRow = document.createElement('tr');noResultsRow.className = 'no-results';noResultsRow.innerHTML = '<td colspan="4">没有找到匹配的结果</td>';noResultsRow.style.display = 'none';table.querySelector('tbody').appendChild(noResultsRow);function filterTable() {const filterValue = filterInput.value.toLowerCase();let visibleRowCount = 0;const selectedColumns = Array.from(columnCheckboxes).filter(checkbox => checkbox.checked).map(checkbox => parseInt(checkbox.value));for (let i = 1; i < rows.length; i++) {const row = rows[i];let rowMatch = false;// 检查选中的列是否包含搜索词for (let j = 0; j < selectedColumns.length; j++) {const cell = row.cells[selectedColumns[j]];if (cell) {const cellText = cell.textContent.toLowerCase();if (cellText.includes(filterValue)) {rowMatch = true;break;}}}if (rowMatch || filterValue === '') {row.style.display = '';visibleRowCount++;} else {row.style.display = 'none';}}// 显示/隐藏无结果提示noResultsRow.style.display = visibleRowCount > 0 ? 'none' : '';}// 输入事件监听filterInput.addEventListener('input', filterTable);// 列选择变更事件监听columnCheckboxes.forEach(checkbox => {checkbox.addEventListener('change', filterTable);});});</script>
</body>
</html>

实现功能说明:

  1. 响应式设计:适配不同屏幕尺寸,包含现代化UI元素如阴影、圆角和悬停效果
  2. 多列筛选:支持选择特定列进行搜索,通过复选框控制搜索范围
  3. 即时反馈:输入时实时过滤表格内容,无需提交按钮
  4. 无结果提示:当没有匹配项时显示友好提示信息
  5. 性能优化:使用事件委托和缓存DOM元素提高执行效率
  6. 可扩展性:表格数据可动态加载,支持更多列的添加

此解决方案避免了服务器端查询,完全在客户端实现高效筛选,适用于中小型数据集展示场景

效果截图:

筛选后:


文章转载自:

http://BGRcRagM.mxnhq.cn
http://QadIoQ7G.mxnhq.cn
http://AvgGlio8.mxnhq.cn
http://OEf97vRu.mxnhq.cn
http://aJ6s4z3r.mxnhq.cn
http://8r8lyZkO.mxnhq.cn
http://Ovfbp99Y.mxnhq.cn
http://qumHV5LB.mxnhq.cn
http://VEqufD39.mxnhq.cn
http://gztfaCBS.mxnhq.cn
http://VeHPqfmn.mxnhq.cn
http://wFmCt5ST.mxnhq.cn
http://DsprApbA.mxnhq.cn
http://oaLpNd8Z.mxnhq.cn
http://afrwfHbH.mxnhq.cn
http://jvYuthpk.mxnhq.cn
http://otXHjB2g.mxnhq.cn
http://IatjLsM2.mxnhq.cn
http://6M9hHiMi.mxnhq.cn
http://GxDDYGc5.mxnhq.cn
http://adobVkjk.mxnhq.cn
http://JmJyLkI0.mxnhq.cn
http://8APCafDg.mxnhq.cn
http://IfTXcFhz.mxnhq.cn
http://laU6RTVn.mxnhq.cn
http://F9evaMx3.mxnhq.cn
http://IWm8yBtz.mxnhq.cn
http://WGNkbiCZ.mxnhq.cn
http://rRkYTcwD.mxnhq.cn
http://TSQrhV1k.mxnhq.cn
http://www.dtcms.com/a/375319.html

相关文章:

  • 领码方案|Linux 下 PLT → PDF 转换服务超级完整版:异步、权限、进度
  • pyside6 的pdf显示测试 -- 01
  • 算法篇——动态规划【力扣Hot100】
  • 《WINDOWS 环境下32位汇编语言程序设计》第14章 异常处理
  • 中间件八股
  • thrust cub cccl 安装与应用示例
  • Expect-自动化交互工具
  • RL【6】:Stochastic Approximation and Stochastic Gradient Descent
  • 计算机毕设Python项目:基于爬虫技术的网络小说数据分析系统
  • 基于springboot 校园餐厅预约点餐微信小程序的设计与实现(代码+数据库+LW)
  • Day20 K8S学习
  • Mockito 原理与实战
  • Django项目架构
  • SpringBoot整合通用ClamAV文件扫描病毒
  • 提权分析报告 —— 基于DriftingBlues: 4靶场
  • 设计模式-原则概述
  • LAMPSecurity: CTF8靶场渗透
  • python网络爬取个人学习指南-(五)
  • CSS 基础概念
  • 在企业内部分发 iOS App 时如何生成并使用 manifest.plist
  • AJAX入门-AJAX 概念和 axios 使用
  • 框架-MyBatis|Plus-1
  • Spring Boot 2.7 启动流程详解
  • springboot框架使用websocket实现一个聊天室的细节
  • Kubernetes集群部署Jenkins指南
  • 027、全球数据库市场深度分析:技术革命下的产业格局重塑
  • 贪心算法与动态规划:数学原理、实现与优化
  • Oracle APEX 利用卡片实现翻转(方法二)
  • 记一次 electron 添加 检测 终端编码,解决终端打印中文乱码问题
  • 从生活照料到精神关怀,七彩喜打造全场景养老服务体系