Я использую этот кодовая ручка в своем веб-приложении, и хотя он работает на веб-сайте, в моем случае, когда я обновляю страницу, только первый элемент списка помечается как избранный, независимо от того, какие из них были отмечены до обновления.
var favorites = JSON.parse(localStorage.getItem('favorites')) || [];
favorites.forEach(function(favorite) {
document.getElementById(favorite).className = 'fav';
});
document.querySelector('.list').addEventListener('click', function(e) {
var id = e.target.id,
item = e.target,
index = favorites.indexOf(id);
if (!id) return;
if (index == -1) {
favorites.push(id);
item.className = 'fav';
} else {
favorites.splice(index, 1);
item.className = '';
}
localStorage.setItem('favorites', JSON.stringify(favorites));
});
Любая помощь высоко ценится!
Раньше у меня тоже работало, но я реализовал другую функцию в другом представлении, которое также использовало LocalStorage. Может конфликт?
Только если вы используете то же имя элемента.
JSON.parse(localStorage.getItem('favorites')) || []; должно быть JSON.parse(localStorage.getItem('favorites') || '[]'); Ваш способ получит сообщение об ошибке от JSON.parse(), если элемент не существует в локальном хранилище.
@mateicoman, вы можете использовать другое имя в зависимости от ваших потребностей. Если вы хотите поделиться значением в разных представлениях, вы можете использовать одно и то же имя.



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Он работает, как и ожидалось для меня. Я тестировал в хроме, а также в firefox. Вы можете очистить кеш или может быть
CTRL +F5поможет вам.