对于不同的数量,单价会发生变化。我有一个数量下拉框,单位价格,小计和总数的跨度。
我想这样做,以便当更改下拉框时,单位价格将更新,然后小计将更新,然后总价格将更新。到目前为止我正在使用:
$('#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价格表。
提前致谢
答案 0 :(得分:4)
像这样:
$('#unitprice').text(pricetable[$('#quantity').val()]);
// Note the square brackets ---^--------------------^
你有一个JavaScript对象,而不是JSON表。 (JSON是用于数据交换的文本符号;这是源代码.JSON是您在那里使用的子集,它是JavaScript对象初始化器语法。)
在JavaScript中,您可以通过以下两种方式之一引用对象上的属性:
使用虚线表示法和文字属性名称,例如obj.foo
。
使用括号内的表示法和字符串属性名称,例如obj["foo"]
。 (如果您使用的不是字符串,则在使用之前将其转换为字符串。)
在后一种情况下,字符串可以是任何表达式的结果,它不必是文字。
因此,在上面的代码行中,我们得到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