我正在使用此代码进行计算:
$('#outfitters').submit(function(event) {
var days = $('#days').val();
var final_price = 0;
var length = parseFloat($("#length").val());
var material = parseFloat($("#material").val());
var fibre = parseFloat($("#fibre").val());
var kevlar = parseFloat($("#kevlar").val());
final_price = parseFloat(days * (length + material + fibre + kevlar));
console.log(length);
alert("Final Price is: " + final_price);
window.location.reload(true);
});
所有值都是从JSON获取的,如下所示
{
"company":"SS",
"locations":[
{ "name":"Kincardine" },
{ "name":"Killarney"},
{ "name":"Bon Echo"}
],
"twelve": 25.00,
"fourteen": 30.00,
"sixteen":35.00,
"paddles": 10.00,
"lifevest": 10.00,
"fibreglass":0.00,
"kevlar": 10.00
}
问题是我在计算final_price时得到NaN虽然我完全检索了所有值。我在这里缺少什么?
答案 0 :(得分:3)
仔细检查days元素的值。尝试将其解析为浮点数。
var days = parseFloat($('#days').val());
答案 1 :(得分:0)
我猜天数被视为字符串:
var days = $('#days').val();
你也应该对此parseFloat
进行
答案 2 :(得分:0)
JSON中的一个值必须是NaN,因此您应该在计算之前对每个值进行验证/转换/解析,否则输出将为NaN。
答案 3 :(得分:0)
调试的最佳方法是在每个parseFloat语句之后放置一个警告显示值,以查看哪个变量导致NaN然后对其进行排序。