新闻中心

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

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

JavaScript实现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 Yaara

使用AI生成一流的文案广告,电子邮件,网站,列表,博客,故事和更多…

Yaara 95 查看详情 Yaara

核心思路如下:

  1. 遍历所有行:保持外层循环不变。
  2. 遍历当前行的所有单元格:在每行内部,添加一个内层循环来遍历该行的所有元素。
  3. 标记匹配状态:引入一个布尔变量(例如foundMatchInRow),在内层循环中,一旦找到任何一个单元格匹配关键词,就将其设置为true。
  4. 决定行显示状态:内层循环结束后,根据foundMatchInRow的值来决定显示或隐藏整行。
  5. 重置标记:在外层循环的每次迭代开始时,重置foundMatchInRow为false,以确保每行的判断是独立的。
  6. 以下是实现多列过滤的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邮箱网页版邮箱官方入口 

搜索