为什么总和返回假值

时间:2014-08-29 11:15:07

标签: javascript jquery

我在这样的表单中有一些输入值:

<tr>
  <td>
      <input type="text" disabled class="qty" value="1" name="quantity">
  </td>
  <td>
    <span class="euro">€</span><input type="text" disabled class="price" value="0,60">
  </td>
</tr>
<tr>
  <td>
      <input type="text" disabled class="qty" value="1" name="quantity">
  </td>
  <td>
    <span class="euro">€</span><input type="text" disabled class="price" value="0,25">
  </td>
</tr>
// below table row is empty because product is not on stock! //
<tr>
  <td></td>
  <td></td>
</tr>
//etc...

我尝试对qtyprice输入值求和,但我的脚本不断返回NaN作为结果。我认为这是因为当产品没有库存时,表格单元格是空的。因此,请返回NaNundefined。  我已经阅读了许多线程,如this,但这并不能解决我的问题。

我拥有的是:

function update_amounts(){
  var sum = 0.0;
  $('#inspiration .table tbody tr').each(function() {
    var qty = $(this).find('.qty').val();
    var price = $(this).find('.price').val();
    console.log(price, qty);
    var amount = (qty*price)
        sum+=amount;
  });
  $('.total').text(sum);    
}

我已经尝试过的是:

var qty = parseInt($(this).find('.qty').val()) || 0;
var price = parseFloat($(this).find('.price').val()) || 0;

var qty = $(this).find('.qty').val();
var price = $(this).find('.price').val();
qty= parseInt(qty) || 0;
price= parseFloat(price) || 0;
console.log returns

    (2) 1 0
        0 0
    (3) 1 0

以下是console.log返回的原始代码(第一个是价格,第二个数量):

0,60 1
0,90 1
undefined undefined
0,14 1
0,12 1
0,75 1

我不知道有任何新方法可以解决这个问题!

1 个答案:

答案 0 :(得分:1)

您需要使用.字符来启动浮点,而不是,

value="0,60"不会被视为数字。 value="0.60"将是。

%  node
> "0.60" * 5
3
> "0,60" * 5
NaN
>

parseFloat运行时,它会点击,并停止将其余部分视为一个数字,因此您最终会使用0

> parseFloat("0.60") * 5
3
> parseFloat("0,60") * 5
0