我尝试使用会话存储创建一个简单的计数器,目的是在您单击相应的添加项目时显示项目增加。 我在检查项目是否在数组中以及是否未将其添加到数组时遇到问题。
我的问题出在函数itemsUpdate()
中很抱歉,我无法很好地表达问题, 尝试演示,你就会理解
这是演示:http://jsfiddle.net/t77hqka6/2/
`function itemsUpdate(items, item) {
for (var i in items) {
if (items[i].id === item.id) {
console.log(items);
items[i].value++;
console.log(items);
break;
}
else{
items.push(item);
}
}
if(items.length === 0)
items.push(item);
}`
答案 0 :(得分:0)
问题在于itemsUpdate
中的else块在循环内部,检查项目是否已经在缓存中。
因为您循环遍历整个缓存,所以除了刚刚更新的缓存之外,将始终为缓存中的每个项触发else块。
e.g
等等。解决方案是在找到匹配后立即返回(并更新),并且只有在没有找到任何内容的情况下执行才能添加到缓存中。
请参阅更新的小提琴here
现在重做itemsUpdate
功能:
function itemsUpdate(items, item) {
for (var i in items) {
if (items[i].id === item.id) {
items[i].value++;
console.log("Updating " + item.id + " in cart...");
return;
}
}
//item isn't in cart, so add it
console.log("Adding " + item.id + " to cart for first time...");
items.push(item);
}