新闻中心
J*aScript实现HTML表格多列数据过滤教程

本教程详细介绍了如何使用j*ascript实现html表格的多列数据过滤功能。针对w3schools基础教程仅支持单列过滤的限制,文章通过修改j*ascript逻辑,引入嵌套循环遍历每行所有单元格,判断搜索关键词是否匹配任意列数据,从而实现更灵活、强大的多列模糊搜索,显著提升用户在大型数据表格中的查找效率。
J*aScript实现HTML表格多列数据过滤教程
在Web开发中,为HTML表格添加搜索或过滤功能是提升用户体验的常见需求。用户可能希望根据输入的关键词,在表格的多个列中查找匹配项,并动态显示或隐藏相应的行。本教程将基于常见的J*aScript表格过滤示例,详细讲解如何将其扩展为支持多列数据过滤。
基础单列过滤机制回顾
许多开发者在实现表格过滤时,会参考W3Schools等提供的基础J*aScript示例。该方法的核心思想是获取用户输入,然后遍历表格的每一行,检查指定列(例如第一列)的内容是否包含搜索关键词。
以下是典型的单列过滤J*aScript代码示例:
function myFunction() {
// 声明变量
var input, filter, table, tr, td, i, txtValue;
input = document.getElementById("myInput");
filter = input.value.toUpperCase(); // 获取搜索关键词并转为大写
table = document.getElementById("myTable");
tr = table.getElementsByTagName("tr"); // 获取所有表格行
// 遍历所有表格行,隐藏不匹配搜索条件的行
for (i = 0; i < tr.length; i++) {
// 默认只获取每行的第一个单元格(td[0])进行匹配
td = tr[i].getElementsByTagName("td")[0];
if (td) {
txtValue = td.textContent || td.innerText;
if (txtValue.toUpperCase().indexOf(filter) > -1) {
tr[i].style.display = ""; // 匹配成功,显示该行
} else {
tr[i].style.display = "none"; // 不匹配,隐藏该行
}
}
}
}这段代码通过td = tr[i].getElementsByTagName("td")[0];这一行,明确指定了只对每行的第一个单元格(索引为0)进行过滤。如果需要过滤其他列,只需更改索引值即可。然而,这种方法无法同时在多个列中进行搜索。
实现多列数据过滤
要实现多列数据过滤,我们需要修改核心逻辑:不再局限于检查单个单元格,而是遍历当前行的所有单元格。只要行中的任何一个单元格包含搜索关键词,该行就应该被显示。
Yaara
使用AI生成一流的文案广告,电子邮件,网站,列表,博客,故事和更多…
95
查看详情
核心思路如下:
- 遍历所有行:保持外层循环不变。
-
遍历当前行的所有单元格:在每行内部,添加一个内层循环来遍历该行的所有
元素。 元素或整个- 标记匹配状态:引入一个布尔变量(例如foundMatchInRow),在内层循环中,一旦找到任何一个单元格匹配关键词,就将其设置为true。
- 决定行显示状态:内层循环结束后,根据foundMatchInRow的值来决定显示或隐藏整行。
- 重置标记:在外层循环的每次迭代开始时,重置foundMatchInRow为false,以确保每行的判断是独立的。
以下是实现多列过滤的J*aScript代码:
function myFunction() { var input, filter, table, tr, i, txtValue; var foundMatchInRow = false; // 用于标记当前行是否找到匹配项 input = document.getElementById("myInput"); filter = input.value.toUpperCase(); table = document.getElementById("myTable"); // 获取 tbody 中的所有数据行,避免处理 thead 中的行 var tbody = table.querySelector('tbody'); if (!tbody) { // 如果没有 tbody,则直接获取 table 下的所有 tr,但需注意表头处理 tr = table.getElementsByTagName("tr"); } else { tr = tbody.getElementsByTagName("tr"); } // 遍历所有表格数据行 for (i = 0; i < tr.length; i++) { // 获取当前行的所有单元格(td) let tds = tr[i].getElementsByTagName("td"); foundMatchInRow = false; // 重置每行的匹配状态 // 遍历当前行的所有单元格 for (let j = 0; j < tds.length; j++) { // 可以使用 for...of (for (let td of tds)) let td = tds[j]; if (td) { txtValue = td.textContent || td.innerText; if (txtValue.toUpperCase().indexOf(filter) > -1) { foundMatchInRow = true; // 只要有一个单元格匹配,就标记为true break; // 找到匹配项后,即可跳出内层循环,无需检查该行其他单元格 } } } // 根据是否找到匹配项来决定显示或隐藏整行 if (foundMatchInRow) { tr[i].style.display = ""; // 显示该行 } else { tr[i].style.display = "none"; // 隐藏该行 } } }完整示例代码
为了演示上述多列过滤功能,我们需要一个包含输入框和表格的HTML结构。请注意,id="myTable"应该应用于包含实际数据行的
元素。为了更健壮,我们建议
以上就是J*aScript实现HTML表格多列数据过滤教程的详细内容,更多请关注其它相关文章!
# 自定义
# 快手专属营销怎么做推广
# 学习互联网营销推广
# 集团网站建设搭建方案模板
# 网站怎么建设三要素
# 快速快速seo软件
# seo教程完整版seo推广
# 房地产营销推广的礼品
# 营销渠道百度推广
# 承德网站建设推广
# 好的网络推广营销公司
# 任何一个
# javascript
# 将其
# 多个
# 第一个
# 客户端
# 表单
# 单元格
# 遍历
# 关键词
# html
# java
相关栏目:
【
科技资讯46185 】
【
网络学院92790 】
相关推荐:
C++ string find函数返回值npos详解_C++字符串查找失败的判断条件
python3时间如何用calendar输出?
Safari怎么安装扩展程序 浏览器插件安装与管理方法【详解】
神经网络二分类模型训练异常:高损失与完美验证准确率的排查与修正
LINUX的perf命令入门_LINUX官方性能分析工具的使用与解读
Lar*el的路由模型绑定怎么用_Lar*el Route Model Binding简化控制器逻辑
qq邮箱发邮件给国外发不出去_QQ邮箱国际邮件发送失败原因与解决
实现全屏滚动与导航点:专业教程
小米14应用无法联网原因分析_小米14网络权限修复
c++如何使用Catch2编写单元测试_c++简洁易用的BDD风格测试框架
Excel中VLOOKUP的第四个参数是干什么用的_Excel VLOOKUP第四参数作用解析
铁路12306改签能改到更早的车次吗_铁路12306改签提前车次规则
解决Bootstrap卡片顶部边距导致背景图下移的问题
漫蛙2网页版漫画入口 漫蛙漫画在线官方登录
在python-socketio事件处理器中安全访问Flask应用上下文
Win10双系统截图高效法 截屏快捷键速记【技巧】
Win11网速慢怎么解决 Win11网络设置优化解除限速
Golang如何实现简单的Web表单_Golang表单提交与验证处理方法
Animex动漫社网入口地址 Animex动漫社网正版在线入口
三星GalaxyZFold5怎样在相册制作折叠屏分镜_iPhone三星GalaxyZFold5相册制作折叠屏分镜【创意编辑】
steam官方网页快速访问 steam账号注册全流程
如何优雅地解决Livewire文件上传难题?SpatieLivewireFilepond让一切变得简单
c++如何使用std::memory_order控制原子操作顺序_c++ C++11内存模型详解
妖精动漫免费平台 妖精动漫官网资源观看网址
网易大神账号申诉需要多久_网易大神账号申诉流程说明
使用Python高效删除Word宏并转换DOCM为DOCX格式
CSS Flexbox与媒体查询:实现响应式布局中元素的并排与堆叠
TikTok国际版网页端快速入口 TikTok全球版短视频浏览教程
sublime怎么设置启动时打开的窗口_sublime会话管理与热退出
Win10系统服务哪些可以禁用 Win10安全优化服务列表【干货】
解决Rails应用中内容错位与Turbo警告:meta标签误用导致富文本渲染异常
谷歌google账号怎么注册账号 谷歌账号注册官方流程
冬*霸灯泡不亮怎么办_浴霸取暖灯一盏不亮的灯座清洁修复法
React Router v6 教程:构建认证保护的私有路由与重定向策略
J*aScript map 迭代中检测空数组元素的有效方法
知音漫客正版漫画平台_知音漫客官网账号登录
Win11怎么关闭触摸屏_Windows 11禁用HID符合标准触摸屏
抖音未来赚钱的新趋势 2025年值得关注的变现风口分析
yy漫画网页版官方入口_yy漫画官网登录页面链接
MAC的“快捷指令”怎么同步到iPhone_MAC利用iCloud同步所有设备的自动化指令
Golang如何优雅处理error_Golang error处理最佳实践总结
包子漫画官方网站阅读入口-包子漫画在线漫画官网直达链接
c++如何使用TBB库进行任务并行_c++ Intel线程构建模块
PDF文件体积过大处理_PDF压缩技巧详解
微信群消息显示延迟如何解决 微信群消息刷新优化方法
“在文档元素之后找到了标记”是什么错误? 检查并修复XML中多个根元素的3个方法
大象笔记网页版入口 印象笔记网页版登录入口
在J*aScript中复现SciPy的B样条拟合与求值:关键考量
谷歌推RCS信息存档功能:公司可监控员工私密信息!
QQ邮箱登录平台入口 QQ邮箱网页版邮箱官方入口


2025-11-10
浏览次数:次
返回列表