Сохранение определенных элементов через localStorage

Нужно сохранить черновик заказа в корзине, то есть, чтобы после обновления страницы, выхода из браузера и тд - при новом заходе на страницу заказ оставался неизменным. Немного не понимаю саму механику, логику, как это можно было бы сделать... Пытаюсь реализовать через localStorage и JSON, и этот простенький код:

window.addEventListener('unload', () => {

        const listCart = document.querySelectorAll('.oneStuffOfCartClass')
        localStorage.setItem('wholeCartList', JSON.stringify(listCart))

}, false)

window.addEventListener('DOMContentLoaded', () => {

        console.log('DOMContentLoaded')
        const list = localStorage.getItem('wholeCartList');
        console.log(list)
        const parsedList = JSON.parse(list);
        for ( let i = 0; i < parsedList.length; i++ ) {
             wholeCart.appendChild(parsedList[i])
        }

}, false)

Ответы (2 шт):

Автор решения: Meeeeeeetron

Может кому то поможет :)

РЕШЕНИЕ:

Благодаря комментарию @doox911 - осознал в какую сторону двигаться:

Добавил в localStorage все данные из form, но товар в корзине, который тоже находился внутри тега form не сохранялся - это просто div с такими же вложенными элементами, поэтому нужно сохранять по другому... Поискав по сети, нашёл похожий вопрос: Сохранение элемента html в localStorage и вывод

Суть которого в этом действии:

const parsed = wholeCart.innerHTML
localStorage.setItem('parsedCart', parsed)

const cartGot = localStorage.getItem('parsedCart')
if (cartGot) {
   wholeCart.innerHTML = cartGot
}
→ Ссылка
Автор решения: doox911

Простой пример сохранения структуры в товара в localStorage:

const btn = document.querySelector('#btn');

btn.addEventListener('click', function() {
  const products = [...document.querySelectorAll('.product')]
    .filter(node => node.querySelector('input').checked);

  const productToStorages = [];

  products.forEach(node => {
    productToStorages.push({
      id: node.dataset.productId,
      name: node.querySelector('.product__title').textContent.trim(),
      desc: node.querySelector('.product__desc').textContent.trim(),
    });
  });

  // Скопируй
  // localStorage.setItem('productToStorages', JSON.stringify(productToStorages));

  console.log('productToStorages is array:', productToStorages);
  console.log('productToStorages is JSON:', JSON.stringify(productToStorages));
});
.container {
  display: flex;
}

.product {
  margin: 5px;
  padding: 5px;
  border: 1px solid grey;
}
<div class="container">
  <div class="product" data-product-id="1">
    <div class="product__title">
      Товар 1
    </div>
    <div class="product__desc">
      Описание 1
    </div>
    <input type="checkbox" checked>
  </div>
  <div class="product" data-product-id="2">
    <div class="product__title">
      Товар 2
    </div>
    <div class="product__desc">
      Описание 2
    </div>
    <input type="checkbox">
  </div>
  <div class="product" data-product-id="3">
    <div class="product__title">
      Товар 3
    </div>
    <div class="product__desc">
      Описание 3
    </div>
    <input type="checkbox">
  </div>
</div>

<button id="btn">Сохранить на будущее..</button>

А в вашем случае надо при загрузке страницы вытащить из localStorage товары и если они есть подставить их в нужный товар.

→ Ссылка