无法将产品项目的总价值计入总文本元素

时间:2018-10-21 07:40:02

标签: javascript jquery html

  1. 我有动态生成的产品清单。
  2. 我使用 calculateItemTotal()方法计算了每个项目的总和。
  3. 我想做的是将所有这些项目的总和计入总计文本字段。
  4. 但是,total文本字段没有显示项目总计,而是仅显示最后一个项目的总价格。
  5. 如果任何人都可以给我提供见识,那么如何弄清楚这一点将是很棒的。

总文字元素

<label class="control-label col-xs-5">Total: </label>
  <div class="col-xs-6">
    <input type="text" name="totalprice" id="finaltotalprice" class="form-control">
</div>

动态添加的行

  • rowId 已在脚本中定义... rowId没问题。
  • onchange()函数也正常工作。

<td>
  <input type='text' name='quantity[]' class='form-control' id='quantity_"+ rowId +"' value='"+ orderItems[list].sales_list_item_quantity +"' onchange='calculateItemTotal("+ rowId +")' >
</td>"
<td>
  <input type='text' name='discount[]' class='form-control'  id='discount_"+ rowId +"' onchange='calculateItemTotal("+ rowId +")' >
</td>
<td>
<!-- this is where the item total price is set and working correctly  -->
  <input type='text' name='itemtotalprice[]' class='form-control' id='itemtot_"+ rowId +"' >
</td>


这是我的 calculateItemTotal()函数

function calculateItemTotal(data) {
  let quantity = parseInt($("#quantity_"+data).val()); // take the quantity value to quantity variable -- ok
  
  if(isNaN(quantity)) quantity = 0; // make it 0 if it is not a number
  
  let unitPrice = parseFloat($("#unitprice_"+data).val()); // take the unit price value to the unit price variable --ok
  
  if(isNaN(unitPrice)) unitPrice = 0.00;
  
  let tot = quantity * unitPrice; // calculation is ok
  
  let discount = (parseFloat($("#discount_"+data).val())/100 * tot).toFixed(2); // calculation is ok
  
  if(isNaN(discount)) discount = 0.00;
  
  let net_total = tot - discount; // this is also ok
  
  let with2Decimals = net_total.toString().match(/^-?\d+(?:\.\d{0,2})?/)[0]; // this is also ok
  
  $("#itemtot_"+data).val(with2Decimals); // set the calculated price of product item -- ok

   // something is wrong here!
   let finalTot = 0;
   finalTot += $("#itemtot_"+data).val();
   $("#finaltotalprice").val(finalTot);
}


这是我所得到的图像

total is should be 1780

1 个答案:

答案 0 :(得分:0)

请考虑以下行:

finalTot += $("#itemtot_"+data).val();

val()函数返回一个字符串。为了能够对返回值进行算术运算,您需要使用parseInt()函数将其转换为整数。