javascript计算每个表行中类的出现次数,并在另一个表中进行汇总
javascript Count class occurrences per table row and summarize in another table
下表使用颜色代码标识成功和失败:绿色表示成功,红色表示失败。
<table>
<thead>
<th>mon</th>
<th>tue</th>
<th>Wed</th>
</thead>
<tbody>
<tr>
<td>Tom</td>
<td class="miss"></td>
<td class="hit"></td>
<td class="miss"></td>
</tr>
<tr>
<td>Dick</td>
<td class="hit"></td>
<td class="hit"></td>
<td class="miss"></td>
</tr>
<tr>
<td>Harry</td>
<td class="miss"></td>
<td class="miss"></td>
<td class="hit"></td>
</tr>
</tbody>
</table>
下表总结了每个的成功和失败
<table id="summary">
<thead>
<th>Name</th>
<th>Hits</th>
<th>misses</th>
<th>% compliance</th>
</thead>
<tbody>
<tr>
<td>Tom</td>
<td id="success"></td>
<td id="failed"></td>
<td id="percentage"></td>
</tr>
<tr>
<td>Dick</td>
<td></td>
<td></td>
<td></td>
</tr>
<tr>
<td>Harry</td>
<td></td>
<td></td>
<td></td>
</tr>
</tbody>
</table>
下面的Javascript应该得到每个名称的类出现次数
$(function () {
var $rows = $("#summary tbody tr");
$rows.each(function (n) {
$("#failed").html('<b>' + $('tr .miss').length + '</b>');
$("#success").html('<b>' + $('tr .hit').length + '</b> ');
var total = $('.hit').length + $('.miss').length;
var completed = $('.hit').length;
var compliance = parseInt(completed * 100 / (total));
$("#percentage").html('<b>' + compliance + ' % </b>');
});
});
这是css
td.hit {
background-color:#76F33A !important;
}
td.miss {
background-color:#FF0F0F !important;
}
我想获取汇总表中每行的css类计数?
您不是根据行进行筛选,而是为整个表获取它们。
您的代码$('tr .miss').length
需要是$(this).find('.miss').length
,其中this
是每个循环中的tr
就我个人而言,我会这样做:
$("#stats tbody tr").each( function(){ //get the rows
var cells = $(this).find("td"); //get the cells
var name = cells.eq(0).text(); //name
var hit = cells.filter(".hit").length; //count the hits
var miss = cells.filter(".miss").length; //count the misses
var per = (hit / (hit + miss) * 100).toFixed(0); //calc percentage of hits
var row = "<tr><td>" + name + "</td><td>" + hit + "</td><td>" + miss + "</td><td>" + per + "</td></tr>"; //build row
$("#summary tbody").append(row); //add it to the new table
} );
.hit { background : green; }
.miss{ background : red; }
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<table id="stats">
<thead>
<th>Name</th>
<th>mon</th>
<th>tue</th>
<th>Wed</th>
</thead>
<tbody>
<tr>
<td>Tom</td>
<td class="miss"> </td>
<td class="hit"> </td>
<td class="miss"> </td>
</tr>
<tr>
<td>Dick</td>
<td class="hit"> </td>
<td class="hit"> </td>
<td class="miss"> </td>
</tr>
<tr>
<td>Harry</td>
<td class="miss"> </td>
<td class="miss"> </td>
<td class="hit"> </td>
</tr>
</tbody>
</table>
<table id="summary">
<thead>
<th>Name</th>
<th>Hits</th>
<th>misses</th>
<th>% compliance</th>
</thead>
<tbody>
</tbody>
</table>
作为替代方案,制作一个包含值的简单对象:
var countByName = [];
$('tbody tr').each(function(){
countByName.push({
name: $(this).children().first().text(),
hits: $(this).children('.hit').length,
misses: $(this).children('.miss').length
});
});
然后,您可以处理这些对象来创建摘要表。
相关文章:
- 从Rally获取一个特定的标记,以便计算另一个字段中的值
- 计算CSS3缩放框在另一个框中的最高位置
- 计算从一个对象到另一个对象的路径并沿其移动
- 当我将子项从一个父项移动/复制到另一个父级时,如何重新计算显示
- 嗨,我正试图将我的movieprice数组从复选框值传递给另一个计算选择总数的函数,但我的代码没有;t运行
- 如何计算另一个元素上滚动速度的乘数,使它们同时到达终点(视图顶部)
- 使用jquery计算包含另一个带边距元素的元素的高度
- 使计算属性依赖于emberjs中另一个对象的所有属性
- 计算特定日期's将日期更改为另一个日期,并打印它们的差异
- javascript计算每个表行中类的出现次数,并在另一个表中进行汇总
- 计算当天和另一个日期之间的差额时出现错误差异
- 有没有办法计算从一个点到另一个点的方位角
- 选中了 Javascript 计数复选框,并且不计算另一个复选框
- 节点js可以计算两个输入字段的值并更新另一个字段吗?
- 循环 HTML 表并将相同的项目及其计算的金额添加到另一个表中
- 设置/复制javascript计算样式从一个元素到另一个元素
- 如何计算两个输入表单字段并将值放入另一个表单中,而无需使用 jquery 提交表单
- 计算在文本框中输入的值并放置在另一个文本框中
- 在客户端计算机上打开另一个端口
- 将全局变量从一个计算页传递到另一个计算页