我想将字段 Sum 中的所有值添加到字段总计,但它不起作用

I want to add all the values in the field Sum to the field Total but it is not working

本文关键字:字段 不起作用 添加 Sum      更新时间:2023-09-26

在这里,sums[i].value正在获得正确的值,但是当我想保留所有Sum的总和时,它失败了。

function calc() {
        var amounts = document.getElementsByName("Amount");
        var prices = document.getElementsByName("Price");
        var sums = document.getElementsByName('Sum');
        var tax = document.getElementsByName('Tax');
        var total = document.getElementsByName('Total');
        for (var i = 0; i < amounts.length; i++) {
            sums[i].value = amounts[i].value * prices[i].value;
            total[0].value = total[0].value + sums[i].value;
            // only this line is not working
        }
    }

纯HTML是字符串,一直向下,var amounts = document.getElementsByName("Amount");后跟amounts.value意味着您现在有字符串值。由于+也是一个字符串运算符,JavaScript 会很乐意将 "2"+"4" 变成"24",这看起来像是做数学,但错了,而实际上它根本没有做数学。

首先将所有需要为数字的值转换为数字:

var amounts = document.getElementsByName("Amount");
....
var amount = parseFloat(amounts.value); // NOW it's a number
...

将代码替换为:

for (var i = 0; i < amounts.length; i++) {
    sums[i].value = parseFloat(amounts[i].value) * parseFloat(prices[i].value);
    total[0].value = parseFloat(total[0].value) + parseFloat(sums[i].value);
    // only this line is not working
}
sums[i].value = parseFloat(amounts[i].value) * parseFloat(prices[i].value);
total[0].value = parseFloat(total[0].value) + parseFloat(sums[i].value);

这应该对您有所帮助。

在加乘时删除 .value

function test()
    {
var amounts = new Array();
amounts[0] = "4";
amounts[1] = "6";
amounts[2] = "10";
var prices = new Array();
prices[0] = "4";
prices[1] = "6";
prices[2] = "10";
      var sums = new Array();
      var total = 0;
        for (var i = 0; i < amounts.length; i++) {
              sums[i] = parseInt(amounts[i]) * parseInt(prices[i]);
              total= parseInt(total) + parseInt(sums[i]);
            // only this line is not working
//alert(total); is 152
           }
    }