11217 sujets

JavaScript, DOM et API Web HTML5

Coucou tout le monde
j'ai du mal a update les quantités dans mon local Storage, actuellement, quand je choisis un produit et une couleur pas de problèmes, par contre mon local Storage ne s'update toujours pas. Pouvez vous m'aider svp, je bloque la dessus pour le moment.
merci beaucoup aux personnes qui me liront



const btnCart = document.getElementById("addToCart");  

btnCart.addEventListener("click", (event)=>{

  event.preventDefault();

  let color = colorChoice.value;

  let name = productName;

  let price = productPrice;

  let quantity = productQuantity.value;

  //Function for the pop up when a product is added in the cart
  const popupConfirm = () => {
    if(window.confirm(`${name} Couleur: ${color} à bien été ajouté au panier
      Consulter le panier OK ou revenir à l'acceuil ANNULER`)){
        window.location.href = "cart.html";
      }
      else{
        window.location.href = "index.html";
      }
  } 

  //Add a product in local storage
  
  const addProductLocalStorage = () => {
    productInLocalStorage.push({
      id : id,
      name : name,
      price : price,
      color : color,
      quantity : quantity
    });

  localStorage.setItem("products", JSON.stringify(productInLocalStorage));
  }  
  
  let productInLocalStorage = JSON.parse(localStorage.getItem("products"));  
  let update = true;
// if there is products in localStorage
  if (productInLocalStorage) {
  //check if the product is in the localstorage/cart
  //with color
    productInLocalStorage.forEach (function (productOk, key) {
      if (productOk.id == id && productOk.color == color.value) {
        productInLocalStorage[key].quantity = parseInt(productOk.quantity) + parseInt(quantity.value);
        localStorage.setItem('products', JSON.stringify(productInLocalStorage));
        update = true;
      //addConfirm();
      }
    });
  }

  if (!update) {
    addProductLocalStorage();
    //addConfirm();
    console.log(productInLocalStorage);
    }

  //if there isn't products in localstorage 
  else {
    // i create it with the elements i need
    productInLocalStorage = [];
    addProductLocalStorage();
    //addConfirm();
    console.log(productInLocalStorage);
  }
})

Modifié par JohanDev (10 Nov 2021 - 11:19)
En fait, il faut que tu utilises la fonction push() pour envoyer les nouveaux items dans ton local storage sans supprimer ce qui y est déjà. Par contre, si tu veux ajouter un item qui est déjà dans le local storage (et donc simplement modifier la quantité), tournes toi vers la fonction splice().