我已经将脚本差不多完了,但总价格没有显示我仍然看到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);
});
答案 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 : ""));
答案 1 :(得分:0)
将total += parseInt($(this).text().replace("€","") || 0);
更改为total += parseInt($(this).text().replace("€","") | 0);