Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/78.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
jQuery将子表行单元格求和到父行_Jquery_Loops_Html Table - Fatal编程技术网

jQuery将子表行单元格求和到父行

jQuery将子表行单元格求和到父行,jquery,loops,html-table,Jquery,Loops,Html Table,我有一个类似于此简化示例的HTML表: <table> <tbody> <tr><th>Player</th><th>Score</th></tr> <tr><td>Jack</td><td>7</td></tr> <tr><td class="parent">Green Tea

我有一个类似于此简化示例的HTML表:

<table>
  <tbody>
    <tr><th>Player</th><th>Score</th></tr>
    <tr><td>Jack</td><td>7</td></tr>
    <tr><td class="parent">Green Team</td><td></td></tr>
    <tr><td class="child">Mark</td><td>11</td></tr>
    <tr><td class="child">Tom</td><td>5</td></tr>
    <tr><td>Steven</td><td>8</td></tr>
    <tr><td>Greg</td><td>4</td></tr>
    <tr><td class="parent">Blue Team</td><td></td></tr>
    <tr><td class="child">Joe</td><td>10</td></tr>
    <tr><td class="child">Jill</td><td>12</td></tr>
    <tr><td class="child">Rachel</td><td>9</td></tr>
  </tbody>
</table>

球员核心
杰克7
绿队
马克11
汤姆5
史蒂文8
格雷格4
蓝队
工作10
吉尔12
蕾切尔9
我试图编写必要的jQuery代码,以迭代父级的所有子行,求和分数,并将总和插入父级的分数单元格。应跳过/忽略与父级不关联的行

执行jQuery代码后,应将上表转换为:

<table>
  <tbody>
    <tr><th>Player</th><th>Score</th></tr>
    <tr><td>Jack</td><td>7</td></tr>
    <tr><td class="parent">Green Team</td><td>16</td></tr>
    <tr><td class="child">Mark</td><td>11</td></tr>
    <tr><td class="child">Tom</td><td>5</td></tr>
    <tr><td>Steven</td><td>8</td></tr>
    <tr><td>Greg</td><td>4</td></tr>
    <tr><td class="parent">Blue Team</td><td>31</td></tr>
    <tr><td class="child">Joe</td><td>10</td></tr>
    <tr><td class="child">Jill</td><td>12</td></tr>
    <tr><td class="child">Rachel</td><td>9</td></tr>
  </tbody>
</table>

球员核心
杰克7
绿色团队16
马克11
汤姆5
史蒂文8
格雷格4
蓝色团队31
工作10
吉尔12
蕾切尔9

我不确定解决这个问题的最佳方法。有什么想法吗?

你可以这样做:

$("tr:has(td.parent)").each(function() {
  var sum = 0;
  $(this).nextUntil(':not(:has(td.child))').children(':nth-child(2)').each(function() {
    sum += parseInt(this.innerHTML, 10);
  });
  $(this).children(':eq(1)').text(sum);
});
,这将获取每个包含
,并一直执行,直到找到一行没有
。对于这些行,它循环通过第二个单元格()并将值添加到总和中。

将您的问题格式化,让我们理解。我的意思是表…+1,特别是对于包含parseInt的第二个参数。