简体   繁体   English

如何使用 JQuery 对表列和行求和?

[英]How to sum table columns and rows using JQuery?

The function below does calculate when a number changes in each row, but at start up, I'd like to have it calculate all columns and rows and put the total of each row.下面的 function 确实会计算每行中数字何时发生变化,但在启动时,我想让它计算所有列和行并计算每行的总数。

 function sum_row_qty(el) { let rowTotal = 0 if (el) { let parent = el.closest("tr") parent.querySelectorAll('.size_qty').forEach(function(e) { rowTotal += parseFloat(e.value) }) parent.querySelector('.qty').value = rowTotal } /*else { $("#tableRows tr").each(function(row) { let sizes = row.querySelectorAll('.size_qty').forEach(function(e) { rowTotal += parseInt(sizes); }); } }*/ }
 <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> <table> <tbody id="tableRows"> <tr> <td><input class="size_qty" type="number" min="0" name="numberInputs" value="2" onchange="sum_row_qty(this)"></td> <td><input class="size_qty" type="number" min="0" name="numberInputs" value="2" onchange="sum_row_qty(this)"></td> <td><input type="number" min="0" class="qty" name="numberInputs" value="" readonly="true"></td> </tr> <tr> <td><input class="size_qty" type="number" min="0" name="numberInputs" value="2" onchange="sum_row_qty(this);"></td> <td><input class="size_qty" type="number" min="0" name="numberInputs" value="2" onchange="sum_row_qty(this);"></td> <td><input type="number" min="0" class="qty" name="numberInputs" value="" readonly="true"></td> </tr> </tbody> </table>

Thanks in advance!提前致谢!

In the else block, call your function in a loop over an input in each row of the table.else块中,在表的每一行的输入循环中调用 function。

Then call your function with no argument when the page is loaded, and it will execute this branch.然后在加载页面时不带任何参数调用您的 function ,它将执行此分支。

 function sum_row_qty(el) { let rowTotal = 0 if (el) { let parent = el.closest("tr") parent.querySelectorAll('.size_qty').forEach(function(e) { rowTotal += parseFloat(e.value) }) parent.querySelector('.qty').value = rowTotal } else { document.querySelectorAll("#tableRows > tr > td:first-child input").forEach(sum_row_qty); } } window.addEventListener("load", () => sum_row_qty());
 <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> <table> <tbody id="tableRows"> <tr> <td><input class="size_qty" type="number" min="0" name="numberInputs" value="2" onchange="sum_row_qty(this)"></td> <td><input class="size_qty" type="number" min="0" name="numberInputs" value="2" onchange="sum_row_qty(this)"></td> <td><input type="number" min="0" class="qty" name="numberInputs" value="" readonly="true"></td> </tr> <tr> <td><input class="size_qty" type="number" min="0" name="numberInputs" value="6" onchange="sum_row_qty(this);"></td> <td><input class="size_qty" type="number" min="0" name="numberInputs" value="3" onchange="sum_row_qty(this);"></td> <td><input type="number" min="0" class="qty" name="numberInputs" value="" readonly="true"></td> </tr> </tbody> </table>

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM