Как сохранить данные (объект js) в localStorage и вывести их на другой странице?
Реализован функционал корзины на сайте. Хочу понять как сделать так, чтобы брались данные отсюда, записывались в localStorage и на другой странице забирать данные и выводить на экран?
const cartBody = document.querySelector(".cart-body");
// const cart = {};
window.addEventListener('click', function (e) {
if (e.target.hasAttribute("data-cart")) {
const card = e.target.closest(".product-card");
// Переменная в которой храним данные о товаре
const productInfo = {
id: card.dataset.id,
imgSrc: card.querySelector('.product-image').getAttribute('src'),
title: card.querySelector('.product-title').innerText,
description: card.querySelector('.product-description').innerText,
price: card.querySelector('.product-price').innerText,
counter: card.querySelector('[data-counter]').innerText
};
// localStorage.setItem('cart', JSON.stringify(productInfo));
// Если товар уже в корзине
const itemInCart = cartBody.querySelector(`[data-id="${productInfo.id}"]`);
if (itemInCart) {
countEl = itemInCart.querySelector('[data-counter]');
countEl.innerText = parseInt(countEl.innerText) + parseInt(productInfo.counter);
} else {
const cartItemHTML =
`<div class="item-in-cart">
<div class="product-card cart-card" data-id="${productInfo.id}">
<div class="container cart-items">
<div class="cart-image">
<img src="${productInfo.imgSrc}"/>
</div>
<div class="cart-name">
<h4 class="cart-title"> ${productInfo.title}
</h4>
<h5 class="cart-description"> ${productInfo.description}
</h5>
</div>
<div>
<span class="product-price"> ${productInfo.price} </span>
</div>
<div class="product-number">
<div data-action="minus">-</div>
<div class="number" data-counter>${productInfo.counter}</div>
<div data-action="plus">+</div>
</div>
</div>
</div>
</div>`
cartBody.insertAdjacentHTML('beforeend', cartItemHTML);
}
// Сбрасываем счетчик если добавили товар
card.querySelector(["[data-counter]"]).innerText = "1";
cartStatus();
}
});
function cartStatus() {
const cartTotal = document.querySelector(".cart-total");
const cartEmpty = document.querySelector("[data-cart-empty]");
const orderForm = document.querySelector(".order-form");
// Есть товары
if (cartBody.querySelectorAll('.item-in-cart').length > 0) {
cartEmpty.classList.add('none');
cartTotal.classList.remove('none');
orderForm.classList.remove('none');
}
// Если корзина ПУСТА
else {
cartEmpty.classList.remove('none');
cartTotal.classList.add('none');
orderForm.classList.add('none');
}
// Стоимость всего заказа
let totalPrice = 0;
cartBody.querySelectorAll(".item-in-cart").forEach(function (item) {
const cartCounter = item.querySelector("[data-counter]").innerText;
const priceOneItem = item.querySelector(".product-price").innerText;
const price = parseInt(cartCounter) * parseInt(priceOneItem);
totalPrice = totalPrice + price;
});
cartTotal.querySelector(".total-price").innerText = totalPrice;
};
Как это реализовать правильно?
Ответы (1 шт):
Автор решения: watscho
→ Ссылка
Легко:
window.localStorage.setItem('key', 'value')
window.localStorage.getItem('key')
const obj = [
{
key: 1, value: 'string 1',
key: 2, value: 'string 2',
}
]
window.localStorage.setItem('key2', JSON.stringify(obj))
const key2 = window.localStorage.getItem('key2')
const data = JSON.parse(key2)