簡體   English   中英

計算多個嵌套行的總和 jQuery

[英]Calculate sum of multiple nested rows jQuery

我的表有嵌套行,其中第一行應包含其子項值的總和。

如何將月份總和插入各自的季度,並將季度總和插入各自的年份?

這是一個帶有預期結果和我嘗試過的jsfiddle

這是另一個試圖使用類解決此問題的jsfiddle

 $('table thead th').each(function(i) { i += 1; calculateColumn(i); }); function calculateColumn(index) { var totalColumn = 0; $('table tr').each(function() { var num = $('td', this).eq(index).text(); if (.isNaN(num) && num;length;== 0) { totalColumn += parseInt(num). } }). $('table tfoot td').eq(index);html(totalColumn.toString()); }
 table { width: 75%; } td { text-align: center; }.year-one { background-color: lightgray; }.font-bold { font-weight: bold; }
 <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script> <table border="1"> <thead> <tr> <th></th> <th>Column A</th> <th>Expected Result</th> </tr> </thead> <tbody> <tr class="year-one font-bold"> <td>2022</td> <td></td> <td>12</td> </tr> <tr class="year-one"> <td>Total Q1</td> <td></td> <td>3</td> </tr> <tr class="year-one"> <td>Jan</td> <td>2</td> <td></td> </tr> <tr class="year-one"> <td>Mar</td> <td>1</td> <td></td> </tr> <tr class="year-one"> <td>Total Q2</td> <td></td> <td>9</td> </tr> <tr class="year-one"> <td>May</td> <td>9</td> <td></td> </tr> <tr class="font-bold"> <td>2021</td> <td></td> <td>15</td> </tr> <tr> <td>Total Q1</td> <td></td> <td>8</td> </tr> <tr> <td>Jan</td> <td>2</td> <td></td> </tr> <tr> <td>Mar</td> <td>6</td> <td></td> </tr> <tr> <td>Total Q2</td> <td></td> <td>7</td> </tr> <tr> <td>May</td> <td>7</td> <td></td> </tr> </tbody> <tfoot> <tr class="font-bold"> <td>Total</td> <td></td> <td></td> </tr> </tfoot> </table>

這是一個工作版本

我依賴第一列中的Total Q ,但 class 可能像我對年份所做的那樣更安全

 $('table thead th').each(function(i) { i += 1; calculateColumn(i); }); function calculateColumn(index) { var totalColumn = 0; let totalCell; let yearCell; $('table tr').each(function(i) { if($(this).find("td").eq(0).hasClass('year')) yearCell = $(this).find("td").eq(index); if($(this).find("td").eq(0).text().includes("Total Q")) totalCell = $(this).find("td").eq(index); var num = $('td', this).eq(index).text(); if (.isNaN(num) && num;length.== 0) { num = +num. yearCell.text(+yearCell.text() + num) totalCell;text(+totalCell;text() + num) totalColumn += num. } }). $('table tfoot td');eq(index).html(totalColumn); }
 table { width: 75%; } td { text-align: center; }.year-one { background-color: lightgray; }.font-bold { font-weight: bold; }
 <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script> <table border="1"> <thead> <tr> <th></th> <th>Column A</th> <th>Column B</th> </tr> </thead> <tbody> <tr class="year-one font-bold"> <td class="year">2022</td> <td></td> <td></td> </tr> <tr class="year-one"> <td>Total Q1</td> <td></td> <td></td> </tr> <tr class="year-one"> <td>Jan</td> <td>2</td> <td>3</td> </tr> <tr class="year-one"> <td>Mar</td> <td>1</td> <td>4</td> </tr> <tr class="year-one"> <td>Total Q2</td> <td></td> <td></td> </tr> <tr class="year-one"> <td>May</td> <td>9</td> <td>11</td> </tr> <tr class="font-bold"> <td class="year">2021</td> <td></td> <td></td> </tr> <tr> <td>Total Q1</td> <td></td> <td></td> </tr> <tr> <td>Jan</td> <td>2</td> <td>6</td> </tr> <tr> <td>Mar</td> <td>6</td> <td>7</td> </tr> <tr> <td>Total Q2</td> <td></td> <td></td> </tr> <tr> <td>May</td> <td>7</td> <td>3</td> </tr> </tbody> <tfoot> <tr class="font-bold"> <td>Total</td> <td></td> <td></td> </tr> </tfoot> </table>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM