1

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

我想让它在下拉框更改时更新单价,然后更新小计,然后更新总价。到目前为止,我正在使用:

$('#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 价格表。

提前致谢

4

2 回答 2

4

像这样:

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

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

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

  1. 使用点分符号和文字属性名称,例如obj.foo.

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

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

所以在上面的代码行中,我们得到了quantity盒子的当前值,这将是一个类似"1","2"等的字符串,我们用它来查找pricetable对象中的相关属性。最后,我们使用它来设置unitprice元素的文本。

于 2012-12-18T17:20:27.730 回答
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
于 2012-12-18T17:22:40.070 回答