在多个表中计算 <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>的主要内容,如果未能解决你的问题,请参考以下文章

Laravel hasMany 关系表中的行跨度和 <tr>

如何计算表中一个字段的总和并将其放入输入中

jQuery:如何删除表中的 tr 标签?

Thymeleaf 在表中为 <tr> 使用局部变量

在 html 表中的第一行之后追加行

我可以使用 Jquery 在动态表中插入结束 </tr> 标记和开始 <tr> 标记吗?