使用parseFloat时获取NaN

时间:2013-03-06 15:00:09

标签: jquery json

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

$('#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 个答案:

答案 0 :(得分:3)

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

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

答案 1 :(得分:0)

我猜天数被视为字符串:

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

你也应该对此parseFloat进行

答案 2 :(得分:0)

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

答案 3 :(得分:0)

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