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

时间:2014-12-08 21:40:58

标签: javascript

这个JavaScript函数可以独立地为下面的php foreach循环中的每一行工作。但是,我想添加这些 两个独立的总计一起得到一个总计并显示在下面的DIV标签中。我无法弄清楚如何搁置 金额,然后将它们加在一起。总计应该随着每次更改的数量更新,就像当前的数量一样。 现在,总价格仅反映了一个金额,但不是总金额。

<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>

1 个答案:

答案 0 :(得分:0)

偶然的事情发生了。

parseInt( )需要一个基数参数。

parseInt(qty, 10);

我对这条线的作用感到困惑:
parseFloat(document.getElementById('amount_' + iteration).value = amount).toFixed(2);

parseFloat返回一个浮点,但你不能将它设置为任何东西吗?

导致错误的问题是var subtotal声明。

您声明变量等于amount + itself,但尚未存在。 你想要小计等于什么?

编辑: 现在您已更新,您想要迭代项目数并将它们全部加在一起。

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

这将迭代金额元素的0-itemCount。