0

我正在使用此代码进行计算:

$('#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,尽管我完美地检索了所有值。我在这里缺少什么吗?

4

4 回答 4

3

仔细检查您的 days 元素的值。尝试将其解析为浮点数。

var days = parseFloat($('#days').val());
于 2013-03-06T15:01:54.097 回答
0

我猜天被视为一个字符串:

var days = $('#days').val();

你也应该这样parseFloat

于 2013-03-06T15:02:40.533 回答
0

JSON 中的值之一必须是 NaN,因此您应该在计算之前对每个值进行验证/转换/解析,否则输出将为 NaN。

于 2013-03-06T15:05:11.570 回答
0

调试的最佳方法是在每个 parseFloat 语句之后放置一个警报显示值,以查看导致 NaN 的变量,然后对其进行排序。

于 2013-03-06T15:05:39.883 回答