javascript - 使用 jQuery 从 TR 求和

标签 javascript jquery html

我有例如:

<table>
    <tr class="main"><td>test | sum:<span class="sum_main"> </span></td></tr>
      <tr class="sub"><td>test | sum <span class="sum_sub">2</span></td></tr>
      <tr class="sub"><td>test | sum <span class="sum_sub">5</span></td></tr>
      <tr class="sub"><td>test | sum <span class="sum_sub">6</span></td></tr>
    <tr class="main"><td>test | sum:<span class="sum_main"> </span></td></tr>
      <tr class="sub"><td>test | sum <span class="sum_sub">2</span></td></tr>
      <tr class="sub"><td>test | sum <span class="sum_sub">5</span></td></tr>
    <tr class="main"><td>test | sum:<span class="sum_main"> </span></td></tr>
      <tr class="sub"><td>test | sum <span class="sum_sub">5</span></td></tr>
      <tr class="sub"><td>test | sum <span class="sum_sub">5</span></td></tr>
      <tr class="sub"><td>test | sum <span class="sum_sub">2</span></td></tr>
      <tr class="sub"><td>test | sum <span class="sum_sub">8</span></td></tr>
</table>


table td {
   border: solid 1px black;
   padding: 4px;
}

.main {
background-color: #cc99ff;
}


$(".sum_main").val( $(".sum_main").val() + $(".sum_main").val() + $(".sum_main").val()); // ???????

实例: http://jsfiddle.net/dZLg6/

如何从类 sum_sub 求和并在 sum_main 中用 jQuery 和函数显示它? 这个例子应该告诉我:

<table>
    <tr class="main"><td>test | sum:<span class="sum_main">13</span></td></tr>
      <tr class="sub"><td>test | sum <span class="sum_sub">2</span></td></tr>
      <tr class="sub"><td>test | sum <span class="sum_sub">5</span></td></tr>
      <tr class="sub"><td>test | sum <span class="sum_sub">6</span></td></tr>
    <tr class="main"><td>test | sum:<span class="sum_main">7</span></td></tr>
      <tr class="sub"><td>test | sum <span class="sum_sub">2</span></td></tr>
      <tr class="sub"><td>test | sum <span class="sum_sub">5</span></td></tr>
    <tr class="main"><td>test | sum:<span class="sum_main">20</span></td></tr>
      <tr class="sub"><td>test | sum <span class="sum_sub">5</span></td></tr>
      <tr class="sub"><td>test | sum <span class="sum_sub">5</span></td></tr>
      <tr class="sub"><td>test | sum <span class="sum_sub">2</span></td></tr>
      <tr class="sub"><td>test | sum <span class="sum_sub">8</span></td></tr>
</table>

最佳答案

您需要遍历所有 .sum_main 元素。在循环内,您可以从以下每个 .sum_sub 元素(直到下一个 .main 行)获取文本并维护一个运行总计:

$(".sum_main").each(function() {
    var total = 0;
    $(this).closest("tr").nextUntil(".main").each(function() {
        total += parseInt($(this).find(".sum_sub").text(), 10);
    });
    $(this).text(total); 
});

这是一个 working example .

更新

如评论中所述,可能值得检查 parseInt 是否实际返回了一个数字。如果不是,它将返回 NaN,并将其添加到我们的总数中将得到总的 NaN。我们可以用 isNaN 来做到这一点功能。沿着这些线的东西:

var num = parseInt($(this).find(".sum_sub").text(), 10);
if(!isNaN(num)) {
    total += num;
}

关于javascript - 使用 jQuery 从 TR 求和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8912375/

相关文章:

javascript - 动态添加文本框和文本区域

javascript - 完成多次迭代以创建通用过滤器

javascript - 如何在不渲染子组件的情况下根据子组件大小更改 React 父组件大小?

javascript - 过渡缓入缓出

javascript - 在移动设备中聚焦于文本区域时无法聚焦于按钮

javascript - Kendo UI 在拆分器上附加 Pane

html - 如何让 CSS 列中的标题与其段落保持一致

javascript - jQuery如何比较几个div block 的高度,并应用更多?

javascript - 删除 Angular-Node-Passport 身份验证中的浏览器历史记录

jquery - 从输入中删除 'some' 特定文本?