@elo-dev

Как добавить элементы в localStorage?

Здравствуйте, вопрос такой, есть функция, которая создает и добавляет "карточку" на страницу, вопрос в том как сохранять все добавленные карточки в localStorage ?
const addVideo = document.querySelector('.btn-success-form');

addVideo.addEventListener('click', function(event){
  event.preventDefault();
  var nameVideo = document.querySelector('.nameVideo');

  var input = document.querySelector('#imageVideo');
  var error = document.querySelector('.error');
  var success = document.querySelector('.success');
  var curFile = input.files;

  var btnGenere = document.querySelector('.btn-genere');

  if(!nameVideo.value){
    nameVideo.style.border = "2px solid red";
    var errName = document.createElement('p');
    errName.textContent = 'Название не выбрано';
    error.appendChild(errName);
  }
  if(!checkbox){
    var errRate = document.createElement('p');
    errRate.textContent = 'Рейтинг не указан';
    error.appendChild(errRate);
  }
  if(!genere){
    btnGenere.style.border = "2px solid red";
    var errGenere = document.createElement('p');
    errGenere.textContent = 'Жанр не выбран';
    error.appendChild(errGenere);
  }
  if(curFile.length == 0){
    var errFile = document.createElement('p');
    errFile.textContent = 'Файл для загрузки не выбран';
    error.appendChild(errFile);
  }

  var blockSerials = document.querySelector('#serials');
  var blockFilms = document.querySelector('#films');

  var videoCard = `
      <div class="col mb-4">
        <div class="card">
          <img src="${url}" class="card-img-top" alt="...">
          <div class="card-body">
            <h5 class="card-title">${nameVideo.value}</h5>
            <div class="wrapper__footer-card">
              <span class="fa fa-star rating-star"></span>
              <span class="card-rate">${checkbox}</span>
              <span class="card-genere">${genere}</span>
              <span class="card-sort">${sortCheck}</span>
            </div>
          </div>
        </div>
      </div>
      `;

  var resetCheckboxInput = document.querySelectorAll('[name="rating"]');

  resetCheckboxInput.forEach(e =>{
    e.checked = false;
  })  
  
  if(typeof url !== 'undefined' && sortCheckAttr == 'films' && nameVideo.value && checkbox && genere && curFile.length > 0){
    blockFilms.insertAdjacentHTML('beforeend', videoCard);
    nameVideo.value = '';
    genere = '';
    blockNameGenere.textContent = '';
    var successBlock = document.createElement('p');
    successBlock.textContent = 'Карточка добавлена';
    success.appendChild(successBlock);
  } else if(typeof url !== 'undefined' && sortCheckAttr == 'serials' && nameVideo.value && checkbox && genere && curFile.length > 0){
    blockSerials.insertAdjacentHTML('beforeend', videoCard);
    nameVideo.value = '';
    genere = '';
    blockNameGenere.textContent = '';
    var successBlock = document.createElement('p');
    successBlock.textContent = 'Карточка добавлена';
    success.appendChild(successBlock);
  }
})
  • Вопрос задан
  • 71 просмотр
Пригласить эксперта
Ответы на вопрос 2
dollar
@dollar
На чёткий вопрос - чёткий ответ.
const data = { ..... }; // не должно быть функций и прочих непотребств
localStorage.card_data = JSON.stringify(data);

Потом:
if (localStorage.card_data) {
  restore_data = JSON.parse(localStorage.card_data);
}
Ответ написан
dicem
@dicem
const data = { ... } // данные карточки
localStorage.setItem('card_data', JSON.stringify(data)) // само собой, вместо card_data пишешь что угодно
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
Artezio Нижний Новгород
от 130 000 до 180 000 ₽
XPOWER Одесса
от 3 000 до 5 500 $
Artezio Москва
от 160 000 до 220 000 ₽
26 февр. 2021, в 05:09
3000 руб./за проект
26 февр. 2021, в 04:16
3000 руб./за проект
26 февр. 2021, в 01:40
1000 руб./за проект