-1

フォームに1つの選択、2つのテキスト入力、およびいくつかのJSONデータがあります:

  • select input : サプライヤーのリスト
  • テキスト入力 1 : 正味金額
  • テキスト入力 2 : 総額
  • JSON データ: さまざまなサプライヤーの料金が含まれていますJSONsupplier_tax_rates

私はこのような総量を計算しています(疑似コード):

grossAmount = NetAmount + ((currently_selected_supplier.tax_percentage_charged / 100) * netAmount)

完全なコードは次のとおりです: JSON から税率を取得した後に合計を計算する

さて、これはうまくいくはずですが、うまくいきません。NaN (not a number) が表示されます。これは、何かが間違っていることを意味します。しかし、私は場所を見つけるのに苦労しています。

4

3 に答える 3

2

コードに複数の問題があります。正しいバージョンは次のとおりです。

var taxRates = $.parseJSON(supplier_tax_rates);

var getTaxRate = function(id) {
    for (var i in taxRates) {            // correct loop definition
        if (taxRates[i].id == id) {      // check you get id correctly
            return taxRates[i].tax_percentage_charged;   // instead of 'rate'
        }
    }
};

$('#PurchaseNetAmount').on('change', function(event) {
    var taxRatesId = $('#PurchaseSupplierId').val();
    var netAmount = parseFloat(this.value);
    var grossAmount = netAmount + ((getTaxRate(taxRatesId) / 100) * netAmount);
    $('#PurchaseGrossAmount').val(grossAmount);
});

デモ: http://jsfiddle.net/A9vmg/18/

于 2012-10-25T14:07:37.517 に答える
0

あなたの問題はルックアップ機能にあります。

 for(TaxRate in supplier_tax_rates ){

supplier_tax_ratesJSONオブジェクトではなく文字列です

別のエラーが発生することを修正した後よりも

 return rate;

レートとは?

コードをステップ実行してデバッグできるように、console.log() またはブレークポイントの使用方法を学びます。

于 2012-10-25T14:07:03.557 に答える
-2

getTaxRate(taxRatesId) 未定義を返す

于 2012-10-25T14:07:49.973 に答える