控制台弹出:"TypeError: tempItem is undefined [...] app.js:145:21"
尽管已经声明了tempItem(省略号是我通过一些看不见的方式显示空间的方式)。
作为参考,我是JS noobie,在我尝试尝试自己的版本时,我正在研究电子商务网站如何处理其购物车机制。有问题的机制是“从购物车叠加中添加商品数量”机制。
因此,乍一看,我认为这可能是某个地方的错字所致。好吧,没什么大不了的,我会稍作改动。经历了两个小时的痛苦,我无法自拔,因为我无法分辨自己做错了什么。一切似乎都按照我的计划进行了排列。这是有问题的代码段,从141行到149行:
else if (event.target.classList.contains("fa-chevron-up")) {
let addAmount = event.target;
let id = addAmount.dataset.id;
let tempItem = cart.find(item => item.id === id);
tempItem.amount = tempItem.amount + 1;
Storage.saveCart(cart);
this.setCartValues(cart);
addAmount.nextElementSibling.innerText = tempItem.amount;
}
因此,控制台将tempItem读为未定义,但是在代码中,我看到tempItem被声明为
let tempItem...;
,这有什么用呢?由于此错误的结果,我用于添加机制的"fa-chevron-up"
按钮没有任何作用。我阅读并重新阅读了我的整个代码,以确保没有错别字。也许我正在阅读困难,或者我太累了。我为应该是一个不言自明的问题而苦苦挣扎。以防万一我不I心,这是我一直盯着的代码的屏幕截图:https://imgur.com/a/q1KJNAJ
先感谢您。
编辑1:感谢您的答复。这是购物车的样子,在第一张图片中:https://imgur.com/a/kwnhegO
我可以在此处添加内容,“删除”和“清除购物车”按钮可以按计划工作,但是人字形不起作用。他们什么也没做。同一链接中包含的第二张照片是我要插入的html格式。
最佳答案
Array#find
returns undefined
在检查每个元素时,均未找到匹配项。
尝试测试是否存在匹配项:
let addAmount = event.target;
let id = addAmount.dataset.id;
let tempItem = cart.find(item => item.id === id);
if(typeof tempItem !== "undefined"){
tempItem.amount = tempItem.amount + 1;
Storage.saveCart(cart);
this.setCartValues(cart);
addAmount.nextElementSibling.innerText = tempItem.amount;
}else{
console.log('No match')
}