我是javascript新手,我想在我的购物车上添加一个删除按钮,我怎么做一个从本地存储中删除1行的按钮呢?我的购物车表在我的javascript中,我不知道如何为删除按钮添加另一个函数
function displayCart(){
let cartItems = localStorage.getItem("productsInCart");
cartItems = JSON.parse(cartItems);
let productContainer = document.querySelector(".products");
let cartCost = localStorage.getItem('totalCost');
console.log(cartItems);
if( cartItems && productContainer){
productContainer.innerHTML = '';
Object.values(cartItems).map(item => {
productContainer.innerHTML += `
<div class="product">
<button class="btn btn-danger" onclick="removeItems()" >Remove</button>
<img src="./img/${item.tag}.jpg">
<span>${item.name}</span>
</div>
<div class="price">
₱${item.price}.00
</div>
<div class="quantity"> <span>${item.inCart}</span> </div>
<div class="total">
₱${item.inCart * item.price}.00
</div>
`
});
productContainer.innerHTML += `
<div class="basketTotalContainer">
<h4 class="basketTotalTitle">
Cart Total
</h4>
<h4 class="basketTotal">
₱${cartCost}.00
</h4>
`;
}
}
我试着把另一个函数localstorage.removeItem();在那个函数之上,但是它也不起作用。
1条答案
按热度按时间ff29svar1#
从对象数组中删除项目
下面介绍了一个可用于管理购物车的方法示例。
购物车存储在一个 * 对象数组 * 中,这非常适合作为一个json字符串存储在本地存储(和网络传输)中,并且可以轻松地将数据呈现到html页面。
要将数据存储在本地存储器中,数组将使用
JSON.stringify(cart)
转换为字符串,检索到的字符串将使用JSON.parse(stringName)
转换为javascript数组(其中stringName是读取的本地存储器存储的任何变量)。删除函数必须知道哪个项目的删除按钮被单击
实现这一点的最简单方法是在将购物车呈现为HTML文档时,将
cart
数组中每个对象的索引包含到其相关按钮中。因此,
renderCart()
函数(读取购物车数据并将其呈现在html文档中)将包含按钮标记的修改版本:请注意,
onclick
属性现在包含了removeItems()
函数的index
参数,index
的值来自array.map
方法中的一个可选参数(可以提供元素(在本例中为对象)及其在数组中的索引位置):removeItems
函数现在接收cart
数组的索引,该数组保存与所单击按钮相关的数据。在调用renderCart()
函数以在html文档中显示修改后的汽车之前,可以使用该索引从数组中删除该元素。然后,该函数还应该替换数据的localStorage版本,为此,您将需要另一个函数将其转换为json字符串并将数据设置为localstorage。
演示片段
下面的代码片段演示了这些原则,应该适合您的特定情况: