【发布时间】:2012-06-26 17:22:43
【问题描述】:
我有一个由代码生成的包含许多行和列的 html 表。 其中一些 TD 有一个 ON 类来设置不同的样式。
表格的结构有表头、正文和页脚行。
我想将每列中所有具有“ON”类的 TD 的数量相加,并将结果放在每列的最后一行(页脚)。
我该怎么做? (行列不是固定矩阵,所以事先不知道表有多少行列)
示例表:
data | id_1 | id_2 | id_3 | ...
2012-06-20 | "ON" | | | ...
2012-06-21 | "ON" | | | ...
2012-06-22 | "ON" | "ON" | | ...
2012-06-23 | "ON" | | "ON" | ...
2012-06-24 | "ON" | "ON" | | ...
tot | 5 | 2 | 1 | ...
更新:混合使用 CRANIO 和 ALNITAK 的解决方案,结果如下:
var a = [];
$('td').each(function() {
var n = $(this).index();
if($(this).hasClass('on')){
a[n] = a[n] ? a[n] + 1 : 1;
}else{
a[n] = a[n] ? a[n] : 0;
}
});
var t = $('<tr>').appendTo('#tableID > tfoot');
$.each(a, function(i, n) {
t.append($('<td>', { text: i === 0 ? 'total' : n }));
});
通过这种方式,您可以在没有 TD.on 的列中添加零(或空格 ---> a[n] = a[n] ? a[n] : '';
附:也可用于在不同的 TD.class 上创建不同的总行,根据不同的类附加更多的 TR。
【问题讨论】:
-
如果计数为零,是否可以接受空白总数?
-
@Alnitak yes 是可以接受的(如果 > 0 则只需要总数)
-
@keebOo 太好了,这就是我的回答:)
-
聪明的编辑,我非常感谢您混合了两种解决方案(我的和@Alnitak 的),并提出了您自己的解决方案,使其可供所有用户使用......绝对赞成: )
-
@Cranio 是的,这是两个答案的完美结合。不过,第一个循环可能要简洁得多(请参阅我的更新答案)。
标签: jquery html-table