ユーザーの入力に応じて総額を計算しようとしていますが、浮動小数点シンドロームが発生しています。私はいくつかの他の答えをチェックしましたが、自分のコードで動作させることはできません。 私は何が間違っていますか? parseInt、使用parseFloatはの代わりにjQueryの整数の2小数点に設定
$("#adult-total .total").html(adultTicketsSubtotal.toFixed(2));
ユーザーの入力に応じて総額を計算しようとしていますが、浮動小数点シンドロームが発生しています。私はいくつかの他の答えをチェックしましたが、自分のコードで動作させることはできません。 私は何が間違っていますか? parseInt、使用parseFloatはの代わりにjQueryの整数の2小数点に設定
$("#adult-total .total").html(adultTicketsSubtotal.toFixed(2));
ここに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
は常に指定された形式の文字列です。
あなたは次のように.toFixed()メソッドを使用する必要があります。乗算を行ってからtoFixedを使用する
parseIntは数値を整数に変更します。
adultTicketsSubtotal = (adultPrice * (parseFloat($(this).val()))).toFixed(2);
:
$(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);
});
});
いいえ、それはanythhingを解決しません –
全体的に、それは正しいアプローチです - それの一部。値を 'parseFloat'と' toFixed(2) 'を累積した答えを書く必要があります。 ) – raina77ow
@ShadowWizard:編集 –
'$( "#チケット選択-大人")each' - えーと、何? DOM内には特定のIDを持つアイテムが1つしかなく、一意になるはずです。 – raina77ow
エラーは他の場所です。あなたのコードは、そのまま[作品](https://jsfiddle.net/vx6m17hf/1/)です。 –
'$("#ticket-select-adult ")。val()'。または、その構造を落として、それを私の答えと同じように扱います。 – raina77ow