新闻中心

HTML表格多列搜索实现:J*aScript增强筛选功能教程

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

html表格多列搜索实现:javascript增强筛选功能教程

本教程将详细指导如何通过修改J*aScript函数,为HTML表格实现多列搜索功能。我们将以“姓名”和“国家”两列为例,展示如何同时筛选多个数据列,从而提升用户在大型数据表格中查找信息的效率和体验。

在网页开发中,表格数据展示非常常见,而为表格添加搜索功能则是提升用户体验的关键。默认的单列搜索功能往往无法满足用户在多维度数据中查找信息的需求。例如,用户可能希望同时在“姓名”和“国家”列中搜索某个关键词。本教程将介绍如何通过简单的J*aScript代码修改,实现HTML表格的跨多列搜索功能,让用户能够更灵活地筛选数据。

理解原始单列搜索机制

首先,我们来看一个典型的单列搜索实现。它通常通过监听输入框的keyup事件来触发搜索,并遍历表格的每一行,只检查特定列(例如第一列)的内容是否包含搜索关键词。

<input type="text" id="myInput" onkeyup="myFunction()" placeholder="搜索姓名...">

<table id="myTable">
  <tr class="header">
    <th style="width:60%;">姓名</th>
    <th style="width:40%;">国家</th>
  </tr>
  <tr>
    <td>Alfreds Futterkiste</td>
    <td>Germany</td>
  </tr>
  <tr>
    <td>Berglunds snabbkop</td>
    <td>Sweden</td>
  </tr>
  <tr>
    <td>Island Trading</td>
    <td>UK</td>
  </tr>
  <tr>
    <td>Koniglich Essen</td>
    <td>Germany</td>
  </tr>
</table>

<script>
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++) {
    // 原始代码只关注第一列 (索引为 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";
      }
    }
  }
}
</script>

上述代码中,关键在于 td = tr[i].getElementsByTagName("td")[0]; 这一行,它明确指定了只获取当前行(tr[i])的第一个

元素(索引为 0),因此搜索范围被限制在“姓名”列。

实现多列搜索功能

要实现多列搜索,我们需要修改 myFunction,使其能够同时获取并检查多个列的内容。核心思路是:

AI Surge Cloud AI Surge Cloud

低代码数据分析平台,帮助企业快速交付深度数据

AI Surge Cloud 87 查看详情 AI Surge Cloud
  1. 获取所有需要参与搜索的列的 元素。
  2. 提取这些 元素的文本内容。
  3. 使用逻辑或(||)运算符,判断搜索关键词是否在任一列中出现。
  4. 以下是修改后的J*aScript代码,用于同时搜索“姓名”(第一列,索引0)和“国家”(第二列,索引1):

    <script>
    function myFunction() {
      // 声明新增变量 td1, txtValue1 用于处理第二列
      var input, filter, table, tr, td, td1, i, txtValue, txtValue1; 
      input = document.getElementById("myInput");
      filter = input.value.toUpperCase(); // 将搜索关键词转换为大写,以便进行不区分大小写的匹配
      table = document.getElementById("myTable");
      tr = table.getElementsByTagName("tr"); // 获取表格中所有的行
    
      // 遍历所有表格行
      for (i = 0; i < tr.length; i++) {
        // 跳过表头行,避免将其作为数据行处理
        if (tr[i].classList.contains('header')) {
            continue;
        }
    
        // 获取当前行的第一列 (姓名)
        td = tr[i].getElementsByTagName("td")[0];
        // 获取当前行的第二列 (国家)
        td1 = tr[i].getElementsByTagName("td")[1];
    
        // 确保这两列都存在,避免因列不存在而引发错误
        if (td && td1) {
          txtValue =  td.textContent || td.innerText;     // 获取姓名列的文本内容
          txtValue1 =  td1.textContent || td1.innerText;   // 获取国家列的文本内容
    
          // 判断搜索关键词是否在姓名列或国家列中出现
          // 使用 || (逻辑或) 运算符,只要任一列匹配,该行就符合条件
          if (txtValue.toUpperCase().indexOf(filter) > -1 || txtValue1.toUpperCase().indexOf(filter) > -1) {
            tr[i].style.display = ""; // 显示匹配的行
          } else {
            tr[i].style.display = "none"; // 隐藏不匹配的行
          }
        } else {
            // 如果某行没有足够的列(例如只有一列),则默认隐藏该行
            tr[i].style.display = "none";
        }
      }
    }
    </script>

    完整示例代码

    将修改后的J*aScript代码与HTML结构结合,即可实现一个完整的、支持多列搜索的HTML表格。

    <!DOCTYPE html>
    <html>
    <head>
    <title>HTML表格多列搜索示例</title>
    <meta charset="UTF-8">
    <style>
      body {
        font-family: Arial, sans-serif;
        margin: 20px;
      }
      #myInput {
        width: 300px;
        padding: 10px;
        margin-bottom: 15px;
        border: 1px solid #ddd;
        border-radius: 4px;
        font-size: 16px;
      }
      #myTable {
        border-collapse: collapse;
        width: 100%;
        border: 1px solid #ddd;
      }
      #myTable th, #myTable td {
        text-align: left;
        padding: 12px;
        border: 1px solid #ddd;
      }
      #myTable tr.header {
        background-color: #f2f2f2;
        font-weight: bold;
      }
      #myTable tr:hover:not(.header) {
        background-color: #f5f5f5;
      }
    </style>
    </head>
    <body>
    
    <h2>表格多列搜索演示</h2>
    <p>在下方输入框中输入关键词,即可同时搜索“姓名”和“国家”两列。</p>
    
    <input type="text" id="myInput" onkeyup="myFunction()" placeholder="搜索姓名或国家...">
    
    <table id="myTable">
      <tr class="header">
        <th style="width:60%;">姓名</th>
        <th style="width:40%;">国家</th>
      </tr>
      <tr>
        <td>Alfreds Futterkiste</td>
        <td>Germany</td>
      </tr>
      <tr>
        <td>Berglunds snabbkop</td>
        <td>Sweden</td>
      </tr>
      <tr>
        <td>Island Trading</td>
        <td>UK</td>
      </tr>
      <tr>

以上就是HTML表格多列搜索实现:J*aScript增强筛选功能教程的详细内容,更多请关注其它相关文章!


# 如何使用  # 江西企业seo推荐  # 优化推seo  # 连云港湖南网站建设  # 顺德抖音seo推荐  # 湖南seo优化质量保障  # 滨海新区网站推广的方式  # 莱州抖音营销推广平台  # 苏州自助网站建设  # 日照专业网站建设制作  # pk10推广网站  # 如何实现  # 多维  # javascript  # 可选  # 可以使用  # 遍历  # 多个  # 运算符  # 搜索功能  # 关键词  # red  # ai  # ssl  # html  # java 


相关栏目: 【 科技资讯46185 】 【 网络学院92790


相关推荐: 使用Python高效删除Word宏并转换DOCM为DOCX格式  如何使用CaptainHook和Composer管理Git钩子_在提交前自动运行代码检查的Composer配置  葱吃多了会怎样 葱吃多了会伤胃吗  Golang如何优化内存分配与垃圾回收_Golang内存管理与GC优化实践  快手极速版在线观看 官方网页版登录地址  漫蛙manwa2最新登录网址_漫蛙manwa2手机网页版入口  海量存储:机器视觉智能化的核心基石  邮政编码查询不到怎么办_邮政编码查询不到的常见原因与对策  MAC如何将整个网页截长图_MAC使用Safari的导出为PDF或第三方工具  俄罗斯方块最新版入口 俄罗斯方块在线玩官网入口  为什么我的微信朋友圈看不到别人的更新_微信朋友圈更新显示异常解决方法  Win11如何开启讲述人功能 Win11屏幕阅读器(讲述人)开启与关闭【教程】  C++ typeid如何获取类型信息_C++ RTTI运行时类型识别用法  Win10怎么制作U盘启动盘 Win10系统安装U盘制作教程【详解】  Win10如何清理注册表垃圾 Win10注册表维护与优化指南【慎用】  QQ邮箱官网登录入口 QQ邮箱网页版邮箱快速登录  在J*a中如何开发简易博客标签推荐系统_博客标签推荐项目实战解析  深入理解Go语言中Map值与方法接收器的交互:为什么需要临时变量  c++中的std::launder有什么实际用途_c++对象生命周期与指针优化  vivo手机参数配置怎么增强信号_vivo手机参数配置信号增强方法  抖音从哪里进入网页版_抖音官方入口链接  b站如何看历史记录_b站观看历史找回方法  LINUX下如何进行磁盘分区_fdisk与parted工具在LINUX中的使用对比  QQ网页版官方账号入口 QQ网页版网页版登录指南  2026春节假期时间安排 2026春节假日查询  c++ 获取系统当前时间 c++时间戳获取方法  从J*aScript对象中精确提取指定属性的教程  Go语言中Map值调用指针接收器方法的限制与应对  Golang如何优雅处理error_Golang error处理最佳实践总结  海棠账号登录入口_登录海棠账户同步阅读记录  怎样在Excel中做仪表盘_Excel仪表盘设计与关键指标展示方法  Discord Slash 命令响应超时问题的异步解决方案  MinIO大规模对象列表性能瓶颈深度解析与外部元数据管理策略  深入理解J*aScript中的B样条曲线与节点向量生成  LINQ to XML为何解析失败? 深入理解C# XDocument的异常处理  J*a最大堆Heapify方法修复:索引计算与边界条件深度解析  Pandas DataFrame 多条件优先级排序与排名  163邮箱注册官网 免费申请163个人邮箱  PostgreSQL海量数据高效导入策略:Python与Django实践指南  iCloud登录入口网页版 苹果iCloud官网登录  sublime怎么格式化代码_sublime代码美化与一键排版插件配置  谷歌浏览器怎么给标签页静音_Chrome标签静音快捷操作  b站怎么删除评论_b站评论管理与删除操作  Sublime Text怎么显示空格和制表符_Sublime显示不可见字符设置  Golang如何实现Web文件静态资源服务器_Golang静态资源服务器开发与实践  使用CSS更改登录屏幕输入框中PNG图标颜色的策略与局限性  如何将HTML表格多行数据保存到Google Sheet  LocoySpider如何部署到云服务器_LocoySpider云部署的远程配置  mcjs网页版在线存档 mcjs云存档登录入口  蛙漫官网漫画入口地址_蛙漫在线畅读无广告弹窗 

搜索