Here is my code...
<!DOCTYPE html>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<script src='https://kit.fontawesome.com/a076d05399.js'></script>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css">
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/css/bootstrap.min.css" integrity="sha384-Gn5384xqQ1aoWXA+058RXPxPg6fy4IWvTNh0E263XmFcJlSAwiGgFAW/dAiS6JXm" crossorigin="anonymous">
<title>Food Shop</title>
<a href="cart.html"><i class="fa fa-shopping-cart" style="color:red" > </i></a>
<a class="navbar-brand" href="#">Pizza shop</a>
</div>
</nav>
<div class="card" style="width: 18rem;">
<img class="card-img-top" src="images/p.jpg" alt="Card image cap">
<div class="card-body">
<h5 class="card-title">Blossum pizza</h5>
<p class="card-text">$10</p>
<a href="#" class="btn btn-primary">add to cart </a>
</div>
</div>
<div class="card" style="width: 18rem;">
<img class="card-img-top" src="images/m.jpg" alt="Card image cap">
<div class="card-body">
<h5 class="card-title">Blossum pizza</h5>
<p class="card-text">$15</p>
<a href="#" class="btn btn-primary">add to cart</a>
</div>
</div>
javascript
let carts = document.querySelectorAll(".btn-primary");
let products= [
{
name: 'pizza',
price:10,
tag: 'ppizza',
inCart:0
},
{
name: 'pitza',
price:15,
tag: 'mpizza',
inCart:0
}
];
for (let i = 0; i< carts.length; i++) {
carts[i].addEventListener('click', () => {
cartNumbers(products[i]);
totalCost(products[i]);
})
}
function cartLoad() {
let productNumbers = localStorage.getItem('cartNumbers');
if (productNumbers){
document.querySelector('.fa-shopping-cart').textContent
=productNumbers;
}
}
function cartNumbers(product) {
let productNumbers = localStorage.getItem('cartNumbers');
productNumbers = parseInt(productNumbers);
if (productNumbers) {
localStorage.setItem('cartNumbers', productNumbers + 1);
document.querySelector('.fa-shopping-cart').textContent
=productNumbers + 1;
}
else{
localStorage.setItem('cartNumbers', 1);
document.querySelector('.fa-shopping-cart').textContent
=1;
}
setItems(product);
}
function setItems(product){
let cartItems = localStorage.getItem('productsIncart');
cartItems = JSON.parse(cartItems);
if(cartItems !=null){
if(cartItems[product.tag] == undefined){
cartItems ={
...cartItems,[product.tag]:product
}
}
cartItems[product.tag].inCart +=1;
}else{
product.inCart = 1;
cartItems ={
[product.tag]:product
}
}
localStorage.setItem('productsIncart',JSON.stringify
(cartItems));
}
function totalCost(product){
let cartCost = localStorage.getItem('totalCost');
if (cartCost !=null){
cartCost = parseInt(cartCost);
localStorage.setItem("totalCost", cartCost + product.price);
}else{
localStorage.setItem("totalCost",product.price);
}
}
function displayCart(){
let cartItems = localStorage.getItem("productsIncart");
cartItems = JSON.parse(cartItems);
let productContainer = document.querySelector (".products")
let cartCost = localStorage.getItem('totalCost');
if(cartItems && productContainer){
productContainer.innerHTML ='';
Object.values(cartItems).map(item =>{
productContainer.innerHTML += `
<div class=""container">
<div class="row">
<div class="col-sm">
<button type="button" class="dark" >Remove </button>
${item.name}
</div>
<div class="col-sm">
${item.price}
</div>
<div class="col-sm">
<button style='font-size:10px;color:red'>decrease <i class='fas fa-angle-left'></i></button>
${item.inCart}
<button style='font-size:10px;color:blue'>increase <i class='fas fa-angle-right'></i></button>
</div>
<div class="col-sm">
${item.price * item.inCart}
</div>
</div>
</div>
`;
});
productContainer.innerHTML += `
<div class="container">
<div class="col-6 col-md-4">
<div class="col">
<h4> Grand Total </h4>
<div class="p-3 border bg-light">${cartCost}</div>
</div>
</div>
</div>
`
}
}
displayCart();
cartLoad();
let button = document.getElementsByClassName('dark');
for (let i = 0; i < button.length; i++) {
button[i].addEventListener('click', function(event) {
let clicked= event.target
clicked.parentElement.parentElement.remove()
remove();
})
}
function remove(){
let itemRemove = localStorage.getItem("cartNumbers");
itemRemove = parseInt(itemRemove);
if(itemRemove){
localStorage.setItem("cartNumbers", itemRemove -1)
document.querySelector('.fa-shopping-cart').textContent =itemRemove - 1;
} else{
localStorage.setItem("cartNumbers",1);
document.querySelector('.fa-shopping-cart').textContent = 1;
}
}
Top comments (1)
Hello,
It seems that you should access the
productsIncart
key of the localstorage instead ofcartNumbers
since you set items with it.Hope it helped, have a great one.