Jquery计算返回NaN,而它应该返回int

Jquery calculation returns NaN when it should return an int

本文关键字:返回 int 计算 NaN Jquery      更新时间:2023-09-26

嗨,我正在进行计算,其中我将所有文本输入的值相加,并获得我设置为另一个文本输入的值的总数。我认为这段代码应该可以工作,但它返回NaN。我做错了什么?

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

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

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

你在value字段中写了€我猜这是在制造问题

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

用这个代替上面的代码

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

放置下面的代码来放置验证

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

在将其转换为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);

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

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

    $('.price').each(function() {
        var value = $(this).val();
        if (value.charAt(0) === ''u20AC')
            value = value.substr(1);
        sum += parseFloat(value);
    });