Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 我想将字段Sum中的所有值添加到字段Total中,但它不起作用_Javascript_Html - Fatal编程技术网

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

Javascript 我想将字段Sum中的所有值添加到字段Total中,但它不起作用,javascript,html,Javascript,Html,这里,sums[i].value得到的是正确的值,但当我想保留所有Sum的总和时,它失败了 function calc() { var amounts = document.getElementsByName("Amount"); var prices = document.getElementsByName("Price"); var sums = document.getElementsByName('Sum'); var ta

这里,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
        }

    }
函数计算(){
var金额=document.getElementsByName(“金额”);
var价格=document.getElementsByName(“价格”);
var sums=document.getElementsByName('Sum');
var tax=document.getElementsByName('tax');
var total=document.getElementsByName('total');
对于(变量i=0;i
普通HTML是字符串,一直向下,并且
var amounts=document.getElementsByName(“Amount”)
后跟
金额。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
}
for(变量i=0;i

这会对您有所帮助。

在进行加法和乘法时删除.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
           }
    }
功能测试()
{
var数量=新数组();
金额[0]=“4”;
金额[1]=“6”;
金额[2]=“10”;
var价格=新数组();
价格[0]=“4”;
价格[1]=“6”;
价格[2]=“10”;
var sums=新数组();
var合计=0;
对于(变量i=0;i
为什么不将总数存储在变量中,然后分配给该总数元素!使用parseInt(总计[0].value)+parseInt(总和[i].value)如果字段Sum中的值为4、10和6,则使用总计[0].value。它显示44104106为最佳结果,请详细描述问题。“它正在失败”和“不起作用”并没有为我们提供足够的信息以提供有用的回应。什么是失败,如何失败?你预计会发生什么以及实际发生什么?好的……但是总和[i]。值=金额[i]。值*价格[i]。值;它工作得很好。这意味着它正在读取数字并进行正确的乘法运算。是的,因为
*
仅为数字定义,因此如果它看到
string*number
,它会在应用
*
之前将第一个字符串转换为数字(如果可以)。因此,
sums
可以工作,但是
totals
将失败,因为
string+number
将该数字转换为字符串,这样
+
就可以工作,而不是抛出错误(JavaScript不能添加字符串和数字,所以它必须将它们都转换为numbr,或者两者都转换为string)。在您的例子中,它是“唯一可行的方法是将所有内容转换为字符串,然后应用
+
操作符”。因此,如果您需要使用数字,请强制使用数字[0]。值所有输入都应该有值才能使用。如果长度的值为3,则应该有三个
输入
名称
总计
。您确定吗?总共显示NaN[0]。值请确保在计算之前填写所有输入框。
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
           }
    }