在多个表中计算 <tr> 中的 <td>
Posted
技术标签:
【中文标题】在多个表中计算 <tr> 中的 <td>【英文标题】:Count <td> in <tr> in multiple tables 【发布时间】:2019-02-23 21:51:32 【问题描述】:在我看来,我有 4 张桌子。我对每个表都使用了 jQuery Datatables,因此我在视图中显示的一条记录如下所示:
我有什么
var countAllTablesRows = $("table tbody.teu-tbody tr").length;
console.log("Total Rows In Every Table on Page - " + countAllTablesRows);
var rowCountMinusOne = countAllTablesRows - 1;
console.log("Total Rows In Every Table on Page Minus One - " + rowCountMinusOne);
我的目标
当用户单击“删除”链接时,我想计算每个表格 tbody 元素中的所有行。但是,我只想计算有实际数据的表行。而不是只有一行显示“表中没有可用数据”的表。
我在考虑也许使用.each()
来只获取不包含“表中没有可用数据”的表,但我不确定如何攻击它。
感谢任何帮助。
【问题讨论】:
可能和这个差不多,看看:***.com/a/50650239/2494754 很高兴看到你的 html。 在有 ($("tr.hasData").length
) 或没有数据 ($("tr:not(.hasNoData)").length
) 的行(或表)上添加一个类,或计算 Delete
链接,使用 .filter()
仅计算具有不止一列,...
【参考方案1】:
当您使用 DataTables 时,有一些数据表 API 选项可以返回表中的行数。
rows().count()
是一种方式。如果您想在特定情况下(例如选定的行数)获取表格行数,这会很方便。
var table = $("#table-selector")
table.DataTable().rows().count()
.data()
是另一种方式。 .data()
将表中的所有数据以数组的形式返回,您可以简单地调用.length
获取数组的长度。
var table = $("#table-selector")
table.DataTable().data().length
上述两种方法的工作方式相同。 .data()
只返回表中的所有数据,而.rows()
可能返回也可能不返回所有数据,因为您可以为.rows()
函数提供特定的选择器。在这两种情况下,您都可以使用.length
或.count()
。你有一些灵活性。
由于您有多个表,您可以修改其中的任何一个以一次从所有表中获取数据。
var table = $("#table-selector, #table-selector-two, #table-selector-three")
table.DataTable().rows().count()
这个 sn-p 将提供表 #table-selector、#table-selector-two 和 #table-selector-three 的计数。如果您对所有这些人都有一个共同的课程,那么这也将起作用。您没有提供 HTML,所以我只能猜测您是如何选择表格的。
【讨论】:
对不起,我不认为我在我的问题中添加了这个,但我只需要 中的行数.. 而不是 如果您使用的是DataTables,则不应考虑标题。 好的,我正在使用您提供的内容:var allTables = $("table"); var rowCount = allTables.DataTable().rows().count(); console.log(rowCount);
,我得到的是8
.. 预期值应该是 2
您是否还有其他表已加载到 DOM 中? var allTables = $("table");
将加载 DOM 中的每个表,所以这会影响你的结果。如果您有一个更准确的选择器会更好,例如父 div,或者可能将一个类应用于您想要计数的每个表。
我添加了一个类名,并且做到了。谢谢
【参考方案2】:
您可以使用 JQuery ':not
' 和 ':contains
' 来过滤您的行,如下所示:
var countAllTablesRows = $("table tbody.teu-tbody tr:not:contains(No data)").length;
这将过滤行,因此只计算不包含文本“无数据”的行。
【讨论】:
我在数据下得到红色波浪线。说“意外的价值”。我需要单引号 使用您的代码后,在控制台中我收到一个错误:无法获取未定义或空引用的属性“替换” 因为它需要是一个子引号。$("table tbody.teu-tbody tr:not:contains('No data')")
以上是关于在多个表中计算 <tr> 中的 <td>的主要内容,如果未能解决你的问题,请参考以下文章