jQuery:计算TD值的总和而不是返回文本

时间:2014-04-06 06:04:10

标签: jquery arrays loops each

我正在使用以下行来搜索表格的行,以检查是否有任何TD包含我的searchTerm到目前为止工作正常。

我唯一的问题是searchTerm连续出现多次(如下所示)。 在这种情况下,它将行中的值添加为文本,而不是计算它们的总和。

示例: 这里它当前返回82,0,5,因为searchTerm在第一行中出现两次(一次是值8,一次是2)。 在这种情况下,它应该返回10,0,5而不是这个。

有谁能告诉我如何更改我的代码才能实现这一目标?

我的JS:

var searchTerm = "item1"
var result = new Array();
    $('#myTable tbody tr').each(function() {
        result.push(+($(this).find('td:contains(' + searchTerm + ')').next('td').text()));
    });
alert(result);

我的表:

<table id="myTable">
    <thead>
        <tr>
            <th class="myHeader">Cat 1</th>
            <th>Vol 1</th>
            <th class="myHeader">Cat 2</th>
            <th>Vol 2</th>
            <th class="myHeader">Cat 3</th>
            <th>Vol 3</th>
            //...
        </tr>
    </thead>
    <tbody>
        <tr>
            <td>item1</td><td>8</td><td>item2</td><td>7</td><td>item1</td><td>2</td>
        </tr>
        <tr>
            <td>item3</td><td>5</td><td>item2</td><td>7</td><td>item2</td><td>4</td>
        </tr>
        <tr>
            <td>item3</td><td>1</td><td>item1</td><td>5</td><td>item3</td><td>3</td>
        </tr>
        //...
    </tbody>
</table>
提前非常感谢,蒂姆。

1 个答案:

答案 0 :(得分:1)

尝试,

var xSum = 0;

$('#myTable tbody tr').each(function() {
       xSum = 0;
    $(this).find('td:contains(' + searchTerm + ')').each(function(){
       xSum += parseInt($(this).next('td').text());
    });
    result.push(xSum);
});

DEMO