在表中汇总TD

时间:2013-04-18 14:27:17

标签: javascript jquery html

<table id="tab" border="1">
    <tr>
        <td>One</td><td>123</td><td></td><td>32</td>
    </tr>
    <tr>
        <td>Two</td><td>52</td><td></td><td>53</td>
    </tr>
    <tr>
        <td>Three</td><td>234</td><td></td><td>56</td>
    </tr>
</table>

$('#tab').click(function(){
   sum();
})

function sum(){
 //????
}

对于每个TR,第二和第四个TD的和列的最佳方法如何?并填入第三个TD?

现场:http://jsfiddle.net/bYf8C/

4 个答案:

答案 0 :(得分:4)

function sum(){
    $("tr").each(function(){
        var sum = parseFloat($(this).find("td:eq(1)").text()) + 
                  parseFloat($(this).find("td:eq(3)").text());
        $(this).find("td:eq(2)").text(sum);
    })
}

在这里,有一个小提琴:http://jsfiddle.net/bYf8C/10/

答案 1 :(得分:2)

演示:http://jsfiddle.net/bYf8C/2/

$('#tab').click(function(){
   sum();
})

function sum(){
    $('#tab').find('tr').each(function(){
        var first = $(this).children('td:eq(1)').text(),
            second = $(this).children('td:eq(3)').text();

        $(this).children('td:eq(2)').html(function(){
          return parseInt(first) + parseInt(second);
        });
    });
}

正如Bojangles在评论中所建议的那样,children()find()更快,:eq:nth-child更快。我的编辑反映了这一点。

答案 2 :(得分:1)

这是:

$(function() {
  $('#tab').on('click', function sum() {
    $('tr', this).each(function(index, tr) {
      var td1, td3;
      td1 = parseInt(tr.children[1].textContent, 10);
      td3 = parseInt(tr.children[3].textContent, 10);
      tr.children[2].innerHTML = td1 + td3;
    });
  });
});

示例:http://jsbin.com/uvuzeq/1/edit

答案 3 :(得分:0)

function sum(){
   $('#tab tr').each(function() {
      var number1 = parseInt($(this).find("td").eq(1).html()); 
      var number2 = parseInt($(this).find("td").eq(3).html());
      $(this).find("td").eq(2).html(number1 + number2)
   });
}

小提琴:http://jsfiddle.net/bYf8C/11/