Quiero poner la suma en mi localStorage gracias a una función porque tengo que trabajar con la creación de la función. Cuando coloco el total de mi cesta en mi almacenamiento local, el número de navegación cambia. Entonces, al actualizar la página, el total se cuenta como un artículo más y tengo un error en la etiqueta html "nan". ¿Me puede explicar qué está mal con mi código?
let totalityPrice = document.querySelector('.subtotal'); let products = []; let Total = 0; function displayProduct() { if (localStorage.length > 0) { for (let key in localStorage) { let product = JSON.parse(localStorage.getItem(key)); document.querySelector('.cart span').textContent = localStorage.length; if (product) { products.push(key); cartTablebody.innerHTML += ` <tr> <td>${product.title}</td> <td>${product.price / 100}</td> //price=API data// </tr> `; Total += product.price / 100; } } } } displayProduct(); function calculatePrice() { totalityPrice.innerText = Total; console.log(Total); //localstoragesetItem// } calculatePrice();Parece que hay algo en localStorage que no es un elemento del carrito. Verifique que cada artículo tenga todas las propiedades requeridas antes de procesarlo.
Y en lugar de usar localStoage.length como el recuento de productos en .cart span , use products.length .
let totalityPrice = document.querySelector('.subtotal'); let products = []; let Total = 0; function displayProduct() { if (localStorage.length > 0) { for (let key in localStorage) { let product = JSON.parse(localStorage.getItem(key)); if (product && "title" in product && "price" in product) { products.push(key); cartTablebody.innerHTML += ` <tr> <td>${product.title}</td> <td>${product.price / 100}</td> //price=API data// </tr> `; Total += product.price / 100; } } } } displayProduct(); function calculatePrice() { totalityPrice.innerText = Total; console.log(Total); document.querySelector('.cart span').textContent = products.length;; } calculatePrice();