简体   繁体   English

如何使用 Javascript 获得输入值的总和?

[英]How to get sum of input values using Javascript?

I am not perfect in Javascript... I want to display that total sum of values shown in the amount input boxes in the next field named the sub total without refreshing page.我在 Javascript 中并不完美......我想在不刷新页面的下一个名为小计的字段中显示金额输入框中显示的值的总和。 I am trying but can not get success.Can anuone will help me to figure it out....?我正在尝试但无法获得成功。anuone 将帮助我解决它....? Thanks.. Javascript code for sum of n numbers.谢谢.. Javascript 代码用于 n 个数字的总和。

 function Mul(index) { var quantity = document.getElementsByClassName("quantity")[index].value; var price = document.getElementsByClassName("price")[index].value; document.getElementsByClassName("amount")[index].value = quantity * price; const subTotalField = document.getElementById("subTotal"); subTotalField.innerHTML = parseInt(subTotalField.innerHTML) + quantity * price; }
 <table class="table table-center table-hover" id="myTable"> <thead> <tr> <th>Description</th> <th>Quantity</th> <th>Unit Price</th> <th>Amount</th> </tr> </thead> <tbody> <tr> <td> <input type="text" class="form-control"> </td> <td> <input type="number" id="" class=" quantity form-control" onkeyup="Mul('0')"> </td> <td> <input type="number" id="" class="price form-control" onkeyup="Mul('0')"> </td> <td> <input type="text" id="amount-0" class="amount form-control" disabled> </td> </tr> <tr> <td> <input type="text" class="form-control"> </td> <td> <input type="number" id="" class=" quantity form-control" onkeyup="Mul('1')"> </td> <td> <input type="number" id="" class="price form-control" onkeyup="Mul('1')"> </td> <td> <input type="text" id="amount-1" class="amount form-control" disabled> </td> </tr> </tbody> </table> <table class="table table-stripped table-center table-hover"> <thead></thead> <tbody> <tr> <td></td> <td></td> <td></td> <td class="text-end">Sub Total</td> <td class="text-end" id="subTotal">0</td> </tr> </tbody> </table>

Everytime you are adding the subtotal with the new value.每次您使用新值添加小计时。

For example: you entered quantity 10 and unit price 1 then amount is 10, for the first time you don't have any value in sub total so you will get 0 in parseInt(subTotalField.innerHTML) value.例如:您输入了数量 10 和单价 1,那么数量是 10,这是您第一次在小计中没有任何值,因此您将在 parseInt(subTotalField.innerHTML) 值中得到 0。

subTotalField.innerHTML = parseInt(subTotalField.innerHTML) + quantity * price; subTotalField.innerHTML = parseInt(subTotalField.innerHTML) + 数量 * 价格;

subTotalField.innerHTML = 0 + 10*1 subTotalField.innerHTML = 0 + 10*1

subTotalField.innerHTML = 10 subTotalField.innerHTML = 10

But when you are changing value from 10 to 20 in the quantity field, this time you have value in subTotalField.innerHTML但是当您在数量字段中将值从 10 更改为 20 时,这一次您在 subTotalField.innerHTML 中有值

So now it will be所以现在它将是

subTotalField.innerHTML = parseInt(subTotalField.innerHTML) + quantity * price; subTotalField.innerHTML = parseInt(subTotalField.innerHTML) + 数量 * 价格;

subTotalField.innerHTML = 10 + 20*1 subTotalField.innerHTML = 10 + 20*1

subTotalField.innerHTML = 30 subTotalField.innerHTML = 30

You are expecting it as 20 but the code is returning 30您期望它为 20,但代码返回 30

So to resolve this issue, you should replace mul function with this所以要解决这个问题,你应该用这个替换 mul function

 function mul(index) { var quantity = document.getElementsByClassName("quantity")[index].value; var price = document.getElementsByClassName("price")[index].value; document.getElementsByClassName("amount")[index].value = quantity * price; const subTotalField = document.getElementById("subTotal"); var finalAmount = 0; Array.from(document.getElementsByClassName("amount")).forEach(ele=>{ if(ele.value){ finalAmount = finalAmount + ele.value } }) subTotalField.innerHTML = finalAmount; }

 function Mul(index) { var quantity = document.getElementsByClassName("quantity")[index].value; var price = document.getElementsByClassName("price")[index].value; document.getElementsByClassName("amount")[index].value = quantity * price; const subTotalField = document.getElementById("subTotal"); subTotalField.innerHTML = Array.from(document.getElementsByClassName("amount")).reduce((sum, element) => { if (element.value.length === 0) return sum; return sum + parseInt(element.value); }, 0) }
 <table class="table table-center table-hover" id="myTable"> <thead> <tr> <th>Description</th> <th>Quantity</th> <th>Unit Price</th> <th>Amount</th> </tr> </thead> <tbody> <tr> <td> <input type="text" class="form-control"> </td> <td> <input type="number" id="" class=" quantity form-control" onkeyup="Mul('0')"> </td> <td> <input type="number" id="" class="price form-control" onkeyup="Mul('0')"> </td> <td> <input type="text" id="amount-0" class="amount form-control" disabled> </td> </tr> <tr> <td> <input type="text" class="form-control"> </td> <td> <input type="number" id="" class=" quantity form-control" onkeyup="Mul('1')"> </td> <td> <input type="number" id="" class="price form-control" onkeyup="Mul('1')"> </td> <td> <input type="text" id="amount-1" class="amount form-control" disabled> </td> </tr> </tbody> </table> <table class="table table-stripped table-center table-hover"> <thead></thead> <tbody> <tr> <td></td> <td></td> <td></td> <td class="text-end">Sub Total</td> <td class="text-end" id="subTotal">0</td> </tr> </tbody> </table>

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

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