То, что вы делаете, используя .innerHTML
, должно работать нормально. Поскольку это строка, нет необходимости в JSON.stringify
и JSON.parse
.
Кроме того, вы можете перебрать элементы li
и добавить их содержимое в массив, а затем сохранить массив (с JSON.stringify
и JSON.parse
, поскольку в веб-хранилище хранятся только строки).
Последний вариант выглядит примерно так:
var items = document.querySelectorAll("#list li");
var array = Array.prototype.map.call(items, function(item) {
return item.textContent;
});
localStorage.setItem("list", JSON.stringify(array));
и
var saved = JSON.parse(localStorage.getItem("list")) || [];
saved.forEach(addLi);
... если мы изменим addLi
, чтобы принять текст для добавления:
function addLi(text) {
var ul = document.getElementById("list");
var li = document.createElement("li");
li.appendChild(document.createTextNode(text));
ul.appendChild(li);
}