Javascript 添加两个或多个表单值以获得总计

Javascript 添加两个或多个表单值以获得总计,javascript,Javascript,这个JavaScript函数对下面php foreach循环中的每一行都独立工作,非常好。不过,我想补充一点 将两个独立的总计组合在一起,得到一个总计,并显示在下面的DIV标记中。我想不出怎么把钱放在一边 然后将它们相加。总金额应该随着数量的变化而更新,就像当前的金额一样。 现在totalprice只反映了一个数量,而不是一个总数 <head> <script type="text/javascript"> function update(iteration){ va

这个JavaScript函数对下面php foreach循环中的每一行都独立工作,非常好。不过,我想补充一点 将两个独立的总计组合在一起,得到一个总计,并显示在下面的DIV标记中。我想不出怎么把钱放在一边 然后将它们相加。总金额应该随着数量的变化而更新,就像当前的金额一样。 现在totalprice只反映了一个数量,而不是一个总数

<head>
<script type="text/javascript">
function update(iteration){


var qty = document.getElementById('qty_' + iteration).value;
// alert('quantity_' + iteration);

var price = document.getElementById('price_' + iteration).value;
price = price.substring(0, 7);
qty = parseInt(qty);

var amount = (qty * price).toFixed(2) ;
parseFloat(document.getElementById('amount_' + iteration).value = amount).toFixed(2);


//HERE's the code that's not working..
var subtotal;
for(var i =1; i < itemCount; i++) {
subtotal += document.getElementById('amount_' + i).value;
}


//this works
var divobj = document.getElementById('totalPrice');
divobj.style.display='block';
divobj.innerHTML = "Total $"+parseFloat(subtotal);

}
</script>
</head>


<?php

$listitems = unserialize($row["products"]);
    $i=1; 
        foreach($listitems as $item)
        {
        echo '<tr><td>'.$item["code"].'</td><td><input type="number" id="qty_'.$i.'" name="qty_'.$i.'"  min="1" size="3" value="1" onChange="iteration = '.$i.'; update(iteration); " /></td>';
        echo '<td><input type="hidden" name="price_'.$i.'" id="price_'.$i.'"  value="';
        echo $item['price'];
        echo '" />';
        echo $item['price'];
        echo '</td><td><input type="text" name="amount_'.$i.'" id="amount_'.$i.'" size="6" readonly value="';
        echo $item['price'];
        echo '"/></td></tr>';
    $i++;
    }


?>


<div id="totalPrice"></div>

有几件事很突出

需要一个基数参数

数量,10个;

我不明白这条线在做什么: parseFloatdocument.getElementById'amount_u'+iteration.value=amount.toFixed2

parseFloat返回一个浮点,但您没有将其设置为任何值

导致错误的问题是var小计声明

您正在将一个变量声明为等于amount+本身,该变量尚不存在。 您希望小计等于多少

编辑: 现在您已经更新了,您希望迭代项目的数量并将它们全部添加到一起

var subtotal;
for(var i =0; i < itemCount; i++) {
  subtotal += document.getElementById('amount_' + i).value;
}

这将迭代amount元素的0-itemCount。

您告诉javascript解析FloatSubtotal,但在这一行之前,我没有看到任何subtotal的定义,事实上,这一行就是定义。您可能试图对未定义的变量执行parseFloat,但它失败了。您似乎试图通过在数字存在之前将其自身相加来计算数字。是否有人可以解释parseFloat对文档的实际操作。getElement=amount?parseFloat应将字符串转换为数字,从我所读到的内容来看。@AllenHarris我知道您想要一个数字,但您是否在参数中设置了document.value?在下面的php代码中,它列出了购物车中的项目。每一行都有自己的小计。我想把总数加在一起,并在末尾的DIV标签中显示出来。那么小计的等式是什么呢?var subtotal=amount+?我已经更新了上面的行,但它不起作用。它现在工作得很好,但它是硬编码的。我需要它根据购物车中无限数量的物品动态工作。无限数量的物品,所以amount1+amount2+。。。到itemTotal?我会用你的更新上面的代码。。但它不起作用。结果是空白的。amount_uu将以amount_1开头,因为它会发出回声,所以我在您编写的脚本中设置了I=1。还是没什么。