-1

我在一个表单中有 1 个选择、2 个文本输入和一些 JSON 数据:

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

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

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

这是完整的代码: 从 JSON 中检索税率后计算总计

现在,这应该有效,但它没有。我得到 NaN(不是数字),表示有问题。但我很难找到在哪里。

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_rates是一个字符串,而不是 JSON 对象

比你修复后你会有另一个错误

 return rate;

什么是利率?

学习使用 console.log() 或断点,这样你就可以单步调试你的代码。

于 2012-10-25T14:07:03.557 回答
-2

getTaxRate(taxRatesId) 返回未定义

于 2012-10-25T14:07:49.973 回答