You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在jQuery表格过滤功能中实时显示可见行数?

实现表格过滤时实时显示可见行数

我之前看到jmpman提过完全相同的问题,现在自己也遇到了一样的需求——想基于Brian Thopset的答案实现表格过滤时实时显示当前可见行数,但模仿适配后没能成功。试过Stack Overflow及其他论坛的类似解决方案,都没效果。我的核心需求是在表格下方添加段落,实时显示“当前搜索条件下找到x条记录”。

以下是我的完整代码:

原JavaScript代码

$(document).ready(function() {
  $("#myInput").on("keyup", function() {
    var value = $(this).val().toLowerCase();
    $("#myTable tr").filter(function() {
      $(this).toggle($(this).text().toLowerCase().indexOf(value) > -1)
    });
  });
});

原HTML代码

<!DOCTYPE html>
<html>

<head>
  <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script>
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Row count Test</title>
</head>

<input id="myInput" type="search" placeholder="Filter Criteria..">

<table>
  <thead>
    <tr>
      <th>Item</th>
      <th>Code</th>
      <th>Min</th>
      <th>Reorder</th>
      <th>Max</th>
    </tr>
  </thead>
  <tbody id="myTable">
    <tr>
      <td>Cars</td>
      <td>20426</td>
      <td>1</td>
      <td>2</td>
      <td>3</td>
    </tr>
    <tr>
      <td>Planes</td>
      <td>20427</td>
      <td>1</td>
      <td>2</td>
      <td>3</td>
    </tr>
    <tr>
      <td>Bikes</td>
      <td>56890</td>
      <td>5</td>
      <td>8</td>
      <td>15</td>
    </tr>
    <tr>
      <td>Boats</td>
      <td>28772</td>
      <td>5</td>
      <td>8</td>
      <td>15</td>
    </tr>
    <tr>
      <td>Helicopters</td>
      <td>28960</td>
      <td>5</td>
      <td>8</td>
      <td>20</td>
    </tr>
  </tbody>
</table>

<p>Number of rows = x</p>

</html>

解决方案

要实现实时统计可见行数,只需要在过滤逻辑执行后,统计#myTable中可见的<tr>元素数量,然后更新段落内容即可。修改后的JavaScript代码如下:

$(document).ready(function() {
  // 初始化时先统计一次行数
  updateRowCount();
  
  $("#myInput").on("keyup", function() {
    var value = $(this).val().toLowerCase();
    $("#myTable tr").filter(function() {
      $(this).toggle($(this).text().toLowerCase().indexOf(value) > -1)
    });
    // 过滤完成后更新行数统计
    updateRowCount();
  });
  
  // 封装统计行数的函数
  function updateRowCount() {
    // 统计可见的tr数量(:visible选择器)
    var visibleRows = $("#myTable tr:visible").length;
    // 更新段落文本
    $("p").text(`当前搜索条件下找到${visibleRows}条记录`);
  }
});

同时,把HTML中的<p>Number of rows = x</p>改成<p>当前搜索条件下找到5条记录</p>,确保页面初始化时显示正确的行数。

关键说明

  • 使用jQuery的:visible选择器直接筛选出可见的表格行
  • 将统计逻辑封装成函数,初始化和每次过滤后都调用,确保数据实时更新
  • 直接修改目标段落的文本内容,实现实时展示

内容的提问来源于stack exchange,提问作者Ray

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.26 19:31:00