使用selectfield值查找json表

时间:2012-12-18 17:18:57

标签: javascript jquery json

对于不同的数量,单价会发生变化。我有一个数量下拉框,单位价格,小计和总数的跨度。

我想这样做,以便当更改下拉框时,单位价格将更新,然后小计将更新,然后总价格将更新。到目前为止我正在使用:

$('#quantity').change( function() {
    var pricetable = {
        "1": "368",
        "3": "338",
        "6": "298"
    }

    $('#unitprice').text(pricetable.$('#quantity').val());
    $('#subtotal').text($('#unitprice').val() * $('#quantity').val());
    subtotalsum();
});

我知道pricetable.$('#quantity').val()错误,但不知道如何使用$('#quantity').val()查找JSON价格表。

提前致谢

2 个答案:

答案 0 :(得分:4)

像这样:

$('#unitprice').text(pricetable[$('#quantity').val()]);
// Note the square brackets ---^--------------------^

你有一个JavaScript对象,而不是JSON表。 (JSON是用于数据交换的文本符号;这是源代码.JSON是您在那里使用的子集,它是JavaScript对象初始化器语法。)

在JavaScript中,您可以通过以下两种方式之一引用对象上的属性:

  1. 使用虚线表示法和文字属性名称,例如obj.foo

  2. 使用括号内的表示法和字符串属性名称,例如obj["foo"]。 (如果您使用的不是字符串,则在使用之前将其转换为字符串。)

  3. 在后一种情况下,字符串可以是任何表达式的结果,它不必是文字。

    因此,在上面的代码行中,我们得到quantity框的当前值,它将是"1""2"等字符串,我们使用查找pricetable对象中的相关属性。最后,我们使用它来设置unitprice元素的文本。

答案 1 :(得分:3)

.[]表示法相同,但[]表示法允许您输入原本无效的键或动态键。

my_obj.prop;
my_obj["prop"];
my_obj.some prop; // syntax error
my_obj["some prop"]; // works
my_obj[some_var]; // the value of some_var is used as the key