【问题标题】:How can I count how many table rows are shown after filtering?如何计算过滤后显示的表格行数?
【发布时间】:2019-07-31 03:27:03
【问题描述】:

如何计算过滤后显示的表格行数?

我尝试运行此脚本,但它显示总行数,当前未显示行数:

function CountRows() {
    var rowCount = 0;
    var table = document.getElementById("filter_table");
    var rows = table.getElementsByTagName("tr")
    for (var i = 0; i < rows.length; i++) {
        if (rows[i].getElementsByTagName("td").length > 0) {
            rowCount++;
        }
    }
    var message = "Showing: " + rowCount;
    alert(message);
}

位置:http://kissbandstree.com/count_rows.js

没有错误信息。

这是过滤器脚本:http://kissbandstree.com/multifilter.js

这是测试页面:http://kissbandstree.com/artists2.php

我想显示应用过滤器后显示的行数。

这是相关的 PHP/HTML 部分:

<?php
// Fetch all filenames in the kiss_artists directory
$artists = glob('kiss_artists/*.txt');
?>

<table class="standard">
  <tr>
    <td>
        <?php echo"Items in table: " . count($artists) . ". Showing: XXX. Table is sortable. Artists names are links to simple individual pages. Date is when the entry was modified."; ?>
        <input id="clickMe" type="button" value="clickme" onclick="CountRows();">
    </td>
  </tr>
</table>

【问题讨论】:

  • 如何隐藏行。使用display='none' 或其他什么?
  • 好问题。我不完全确定。有一种叫做 row.hide();在 multifilter.js 中。

标签: javascript php filter rows


【解决方案1】:

您应该能够通过对循环添加可见性检查来跳过隐藏的行:

for (var i = 0; i < rows.length; i++) {
    if (rows[i].style.display == 'none') continue;
    if (rows[i].getElementsByTagName("td").length > 0) {
        rowCount++;
    }
}
// for the header row
rowCount--;

由于有一个标题行,您需要从计数中减去一个。

【讨论】:

  • 是的。太感谢了。我使用了 jQuery。多亏了你们,我现在离得更近了。最新测试:kissbandstree.com/artists3.php 基本上现在只需要在页面加载上显示完整的数字,而不是 -1。
【解决方案2】:

您只能检查所有可见行的计数。因为通过查看该页面,您隐藏了与过滤器无关的行。

我不得不从总数中减去一个计数,因为标题行也被计算了。

另外,由于您在该页面中使用 jQuery,这应该是最简单的解决方案

function countRows(){
      let rowCount = $('#filter_table tr:visible').length - 1;
      var message = "Showing: " + rowCount;
      alert(message);
    }

【讨论】:

  • 这非常优雅、快速、中肯和简短。奇迹般有效。太感谢了!使用您的代码和作品更新:kissbandstree.com/artists2.php。现在我将尝试将数字移动到“clickme”按钮到“显示:XXX”。文本。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-01-28
  • 1970-01-01
  • 2017-01-26
  • 1970-01-01
相关资源
最近更新 更多