2016-08-17 4 views
0

ユーザーの入力に応じて総額を計算しようとしていますが、浮動小数点シンドロームが発生しています。私はいくつかの他の答えをチェックしましたが、自分のコードで動作させることはできません。 私は何が間違っていますか? parseInt、使用parseFloatはの代わりにjQueryの整数の2小数点に設定

$("#adult-total .total").html(adultTicketsSubtotal.toFixed(2)); 
+1

'$( "#チケット選択-大人")each' - えーと、何? DOM内には特定のIDを持つアイテムが1つしかなく、一意になるはずです。 – raina77ow

+0

エラーは他の場所です。あなたのコードは、そのまま[作品](https://jsfiddle.net/vx6m17hf/1/)です。 –

+0

'$("#ticket-select-adult ")。val()'。または、その構造を落として、それを私の答えと同じように扱います。 – raina77ow

答えて

3

ここに1つの可能なアプローチがあります:ここ

$(function() { 
    var $subtotalView = $("#adult-total .total"); 
    var adultPrice = parseFloat($("#price-adult").data("price")); 
    // TODO: handle NaN case somehow: what if server sets this incorrectly? 

    $('#ticket-select-adult').change(function() { 
    var ticketsCount = parseInt(this.value, 10); 
    var subtotal = isNaN(ticketsCount) ? 
     ' n/a ' : 
     (ticketsCount * adultPrice).toFixed(2); 
    $subtotalView.text(subtotal); 
    }); 
}); 

いくつかのマイナーな変更:DOMトラバーサルが最小化され、this.valueが重要です何など$(this).val()を置き換える固定を入力します:adultPrice常にフロート、ticketsCountです常にint(またはプレースホルダ値のNaNですが、この場合は処理されます)であり、subtotalは常に指定された形式の文字列です。

1

あなたは次のように.toFixed()メソッドを使用する必要があります。乗算を行ってからtoFixedを使用する

parseIntは数値を整数に変更します。

adultTicketsSubtotal = (adultPrice * (parseFloat($(this).val()))).toFixed(2); 
1

$(document).ready(function (e) { 
    $("select").change(function() { 
     var adultTicketsSubtotal = 0; 
     var adultPrice = $("#price-adult").data("price"); 
     $("#ticket-select-adult").each(function() { 
      adultTicketsSubtotal = adultPrice * parseInt($(this).val()).toFixed(2); 
     }) 
     $("#adult-total .total").html(adultTicketsSubtotal); 
    }); 
}); 
+0

いいえ、それはanythhingを解決しません –

+0

全体的に、それは正しいアプローチです - それの一部。値を 'parseFloat'と' toFixed(2) 'を累積した答えを書く必要があります。 ) – raina77ow

+0

@ShadowWizard:編集 –

0

はこれを試してみてください:

adultTicketsSubtotal = adultPrice.toLocaleString(undefined, {minimumFractionDigits: 2, maximumFractionDigits: 2}); 
+0

Niceですが、WebKit(= iOS Safari)ではサポートされていません。 – raina77ow

+0

SafariでtoLocaleString()のようなものを使用するライブラリが解決策になるかもしれません。 – grec0o

関連する問題