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

JSONの値の1つはNaNである必要があるため、計算の前にそれぞれに対して検証/変換/解析を実行する必要があります。そうしないと、出力はNaNになります。

于 2013-03-06T15:05:11.570 に答える
0

デバッグする最良の方法は、各parseFloatステートメントの後に値を表示するアラートを配置して、どの変数がNaNを引き起こしているかを確認し、それを分類することです。

于 2013-03-06T15:05:39.883 に答える
0

日は文字列として扱われると思います:

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

parseFloatこれについても行う必要があります

于 2013-03-06T15:02:40.533 に答える