从JSON检索税率后计算总计

时间:2012-10-25 14:02:24

标签: javascript jquery

我有1个选择,2个文本输入&表格中的一些JSON数据:

  • 选择输入:供应商列表
  • 文字输入1 :净金额
  • 文字输入2 :总金额
  • JSON数据:在JSON
  • 中包含各种供应商的费率supplier_tax_rates

我正在计算这样的总金额(伪代码):

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

这是完整的代码: Calculate total after retriveing tax rate from JSON

现在,这应该有效,但事实并非如此。我得到NaN(不是数字),意味着出错了。但我很难找到哪里。

3 个答案:

答案 0 :(得分: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);
});

DEMO: http://jsfiddle.net/A9vmg/18/

答案 1 :(得分:0)

你的问题在于查找功能。

 for(TaxRate in supplier_tax_rates ){

supplier_tax_rates是一个字符串,而不是JSON对象

在你修复之后,你会有另一个错误

 return rate;

什么是费率?

学习使用console.log()或断点,以便逐步完成代码并进行调试。

答案 2 :(得分:-2)

getTaxRate(taxRatesId)返回undefined