【发布时间】:2013-12-02 20:18:01
【问题描述】:
我正在开发选择收集应用程序,但我一直在处理对象: 用户有卡片列表,每张卡片都有选项列表,每个选项都有 ID 和价格。我想在每张卡上收集用户选择,然后计算最终价格。我不知道卡片的确切名称,它们将被生成。我只知道所选卡片的类别或卡片列表计数。
数据收集:
var datacollection = {
shape: {
itemId: 1,
price: 10
},
countmoney: function () {
var cash = 0;
$.each(this, function (id, item) {
if (typeof (item) != 'function') {
cash += item.price;
}
});
return cash + ' $';
}
};
从 .click(function() {
收集的数据var cardClass = 'color';
var choiceId = 2;
var choicePrice = 50;
我可以插入新数据,但前提是我知道卡的名称
datacollection.color = {
itemId: choiceId,
price: choicePrice
};
但是如果我不知道卡片的可能名称怎么办?使用括号表示法应该是要走的路..但它不起作用。
cardClassTwo = 'material';
datacollection[cardClassTwo]['itemId'] = choiceId;
datacollection[cardClassTwo]['price'] = choicePrice;
// Uncaught TypeError: Cannot set property 'itemId' of undefined
console.log(datacollection.countmoney());
【问题讨论】:
-
不应该
$.each(this, function (id, item) {是$.each(datacollection, function (id, item) {作为this在那个范围内,将相当于window -
@RoryPicko92 不是它的调用方式。
datacollection.countmoney()将其称为对象的成员。 -
datacollection[cardClass] = { -
@Mathletics 哦,是的,当然!!
标签: javascript object properties