您好我正在进行计算,其中我将所有文本输入的值相加,并获得我设置为另一个文本输入值的总计。我认为这段代码应该适用于此,但它会返回NaN。我做错了什么?
var sum = 0;
$('.price').each(function() {
amt = parseFloat($(this).val());
sum += Number(amt);
});
console.log(sum);
$("#order-total").val("€" + sum);
答案 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="€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);
});