Jquery计算在返回int时返回NaN

时间:2014-03-21 12:26:26

标签: javascript jquery

您好我正在进行计算,其中我将所有文本输入的值相加,并获得我设置为另一个文本输入值的总计。我认为这段代码应该适用于此,但它会返回NaN。我做错了什么?

var sum = 0;
        $('.price').each(function() {
            amt = parseFloat($(this).val());
            sum += Number(amt);
        });
      console.log(sum);
      $("#order-total").val("€" + sum);

4 个答案:

答案 0 :(得分:3)

如果值不是数字,则使用零,并删除任何可能导致错误的内容

var sum = 0;
$('.price').each(function() {
 amt  = parseFloat($(this).val().replace(/[^0-9,.]/g, '').replace(',','.')) || 0;
 sum += amt;
});
$("#order-total").val("€" + sum);

答案 1 :(得分:1)

删除€符号,然后将其转换为float并检查结果是否为数字,然后对其求和:

var sum = 0;
    $('.price').each(function() {
         // val() will return something like "€45.6";
        amt = parseFloat($(this).val().substring(1)));
        sum += isNaN(amt) ? 0 : amt;
    });
  console.log(sum);
  $("#order-total").val("€" + sum);

答案 2 :(得分:1)

你在价值领域写了& euro我猜它正在创造问题

<td><input type="text" class="price" value="&euro;0"></td>

把这个代替上面的代码

<td><input type="text" class="price" value="0"></td>

将以下代码放入验证

sum += isNaN(amt) ? 0 : amt;

答案 3 :(得分:0)

您只需要检查第一个字符以查看它是否为欧元符号,如果是,请将其删除。

您需要查找字符而不是实体

    $('.price').each(function() {
        var value = $(this).val();

        if (value.charAt(0) === '\u20AC')
            value = value.substr(1);

        sum += parseFloat(value);
    });