为什么我看到NaN的总价?

时间:2015-05-21 05:08:37

标签: javascript jquery

我已经将脚本差不多完了,但总价格没有显示我仍然看到NaN作为总价的结果,为什么会这样?我该如何快速解决这个问题?

http://jsfiddle.net/9zPTA/135/

这是我的jquery代码:

$("input").on("keyup", function () {
    var $input = $(this);
    var howMany = parseInt($input.val());
    var unitAmount = parseInt($input.parent().prev().text().replace("€", ""));
    var total = howMany ? howMany * unitAmount : 0;
    $input.parent().next().text("€ " + total);

    var total = 0;
    $("tbody tr td:last-child").each(function() {
        total += parseInt($(this).text().replace("€","") || 0);
    });
    $("#total").html("€ " + total);
});

2 个答案:

答案 0 :(得分:1)

您的选择器和括号拼写错误是问题所在。 parseInt

上的括号拼写错误
total += parseInt($(this).text().replace("€","") || 0);

解析$(this).text().replace("€","") || 0这不是你想要的。

此外,您错误地将最后一行<td>(保留当前总数!)包含在总计算中。这导致您体验的总数不断增加。

更改

$("tbody tr td:last-child")

$(".tdPrice.tdDarker")

试试这个:

var total = 0;
$(".tdPrice.tdDarker").each(function() {
    var val = parseInt($(this).text().replace("€",""));
    total += isNaN(val) ? 0 : val;
});
$("#total").html("€ " + total);

旁白:有时您的条目没有金钱价值,例如

<td class="tdPrice"> <div id="u_KiloFineSilver"></div></td>

<td class="tdPrice">€ 10 <div id="u_barFineSilver"></div></td>

这将导致小计中的NaN,但是我的解决方案高于最终总数将不会是NaN。

  

如果有人输入,例如3,然后点击退格,我怎么能隐藏“0”值?

更改

$input.parent().next().text("€ " + total);

$input.parent().next().text("€ " + (total > 0 ? total : ""));

演示:http://jsfiddle.net/9ka2u5px/1/

答案 1 :(得分:0)

total += parseInt($(this).text().replace("€","") || 0);更改为total += parseInt($(this).text().replace("€","") | 0);