如何在JavaScript中通过子总计求和生成总计金额?
实现子总计求和得到总计金额的解决方案
你的代码里第二个循环逻辑错误——它会重复5次把grand_total的值重置为0,完全没做累加操作。要实现子总计求和,只需调整calculate_Total函数的后半部分逻辑:
- 先初始化一个变量存储总计金额,初始值设为0
- 遍历所有子总计输入框,把每个值转为浮点数后累加到总计变量
- 最后把总计金额格式化后赋值给
grand_total输入框
修改后的完整JS代码如下:
function calculate_Total() { // 计算每一行的子总计 for (let i = 1; i <= 5; i++) { const idName = "price_" + i; const price = parseFloat(document.getElementById(idName).value) || 0; const idQty = "qty_" + i; const qty = parseFloat(document.getElementById(idQty).value) || 0; const total = price * qty; const idTotal = "total_" + i; document.getElementById(idTotal).value = total.toFixed(2); } // 计算总计金额 let grandTotal = 0; for (let i = 1; i <= 5; i++) { const idTotal = "total_" + i; const subTotal = parseFloat(document.getElementById(idTotal).value) || 0; grandTotal += subTotal; } document.getElementById("grand_total").value = grandTotal.toFixed(2); }
额外优化说明:
- 给循环变量
i加上let声明,避免污染全局变量 - 给
parseFloat添加|| 0兜底处理,防止输入为空或非数字时出现NaN错误
HTML部分无需修改,点击「Calculate Grand Total Price」按钮即可正常计算所有子总计的总和。
内容的提问来源于stack exchange,提问作者A.K. Enoch
相关产品推荐
相关产品推荐

