如何计算过滤后显示的表行数?
我已经尝试运行此脚本,但它显示的是总行,而不是当前未显示的行:
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>
答案 0 :(得分: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--;
由于存在标题行,因此您需要从计数中减去一个。
答案 1 :(得分:1)
您只能检查所有可见行的计数。.因为查看该页面,您正在隐藏与过滤器无关的行。
我也必须从总数中减去一个数,因为正好计算了标题行。
此外,由于您在该页面中使用jQuery,因此这应该是最简单的解决方案
function countRows(){
let rowCount = $('#filter_table tr:visible').length - 1;
var message = "Showing: " + rowCount;
alert(message);
}