Почему не работает localStorage?

Здравствуйте.
Задача такая : Есть примерно 100 блоков div При клике по ссылки в этом блоке скрывается div
Посоветовали скрипт скрывает div при клике
В примере всё работает ! но
Вопрос 1 почему скрипт не работает когда загружаю на хостинг ? ( может какие то плагины нужны ? )
Вопрос 2 Как дописать скрипт что бы div скрывался на определённое время ?

<!DOCTYPE html>
<html>
<head>
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width">
  <title>JS Bin</title>

	    
</head>
<body>

<div class="col" data-box-id="1">
<a href="#" >ССЫЛКА1</a>
</div>
<div class="col" data-box-id="2">
<a href="#" >ССЫЛКА 2</a>
</div>
<div class="col" data-box-id="3">
<a href="#" >ССЫЛКА 2</a>
</div>
<div class="col" data-box-id="4">
<a href="#" >ССЫЛКА 2</a>
</div>
   <script>
var blockIds = [];
var blocks = document.querySelectorAll('[data-box-id] a');
blocks.forEach(block => block.addEventListener('click', e => {
blockIds.push(e.target.parentNode.getAttribute('data-box-id'));
e.target.parentNode.style.display = 'none';
localStorage.setItem('blocks', JSON.stringify(blockIds));
console.log(localStorage.getItem('blocks'));
}))
    </script>
	
</body>
</html>
  • Вопрос задан
  • 2074 просмотра
Решения вопроса 1
rework
@rework
Помог ответ? В благодарность отметь его решением
У вас код выполняется скорее всего ещё до того, как DOM загружен, попробуйте вынести скрипт в функцию и вызывать её по событию DOMContentLoaded

function ready() {
  var blockIds = [];
  var blocks = document.querySelectorAll('[data-box-id] a');
  blocks.forEach(block => block.addEventListener('click', e => {
  blockIds.push(e.target.parentNode.getAttribute('data-box-id'));
  e.target.parentNode.style.display = 'none';
  localStorage.setItem('blocks', JSON.stringify(blockIds));
    console.log(localStorage.getItem('blocks'));
  }))
}
document.addEventListener("DOMContentLoaded", ready());
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы