我可以帮您翻译。这篇文章涉及到 IT 技术方面的内容。当用户点击“addToCart”按钮时,页面上特定的商品将被保存在本地存储中,并在购物车中显示出来。这些商品的格式是
cartItems={[product.title]:product}
,然后使用以下代码将其存储:localStorage.setItem('productsInCart',JSON.stringify(cartItems));
。例如,当一个名为Jack Daniels 1L
的商品被存储在本地存储中时,我会在本地存储中得到下面这样一个表格:Key Value
cartNumbers 1
productsInCart {"Jack Daniels 1L":{"title":"Jack Daniels 1L","cost":3850,"cartConts":1}}
totalCost 3850
一旦产品显示在购物车中,就会有一个删除按钮,可以用来删除它,特别是从本地存储中删除,即我希望从本地存储中删除以下条目:{"Jack Daniels 1L":{"title":"Jack Daniels 1L","cost":3850,"cartConts":1}}
。下面是当点击删除按钮时调用的函数,但我希望它能起作用,但却没有:
function removeCartItem(event){
var buttonClicked = event.target;
if (buttonClicked) {
var current = buttonClicked.parentElement.parentElement;
var title = current.querySelectorAll('.cart-item-title')[0].innerText;
var cartItems = localStorage.getItem('productsInCart');
cartItems = JSON.parse(cartItems)
if (cartItems) {
var itemKeys = Object.keys(cartItems);
for (var i = 0; i < itemKeys.length; i++) {
var key = itemKeys[i]
console.log(key)//in this case prints: Jack Daniels 1L, as desired.
if (title === key ) {
localStorage.removeItem(key)
}
}
}
}
}
最佳处理方式是什么?
event.target
。始终坚持使用event.currentTarget
代替。(例如,在按钮内放置一个<i>
标签,你就会明白为什么)。 - undefinedbuttonClicked.parentElement.parentElement.parentElement....
正在等待你稍微修改HTML标记,以优雅地使你编写的JS代码失败。请使用.closest()
代替。 - undefineddata-*
属性中,例如:data-id="245"
,给定以下数据:{"245": {id: "245", "title":"Jack Daniels 1L","cost":3850,"cartConts":1}}
- undefined