Сразу к сути: Есть HTML-page, на которой размещены два элемента управления. Первый - добавляет элемент(например div), второй - удаляет последний.
Теперь о сложном: После того как я создал div при помощи кнопки, блок добавился, тут все верно, но после того как я обновляю страницу DOM страницы возвращается в исходное состояние.
Вопрос: Как изменять DOM HTML-документа и при этом сохранять это состояние?
Алексей Юдов, не всё. Не надо пихать в объект html, положите в объект только значимые параметры - количество элементов, тип элементов, .... То, что вы считаете необходимым. А при загрузке страницы проверяйте эти параметры и генерируйте нужные элементы, а затем просто вставляйте
var I = 0;
var Item = {
"tag": "div",
"html": "something html code",
"count": I
};
function addItemToLocalStorage() {
Item.count++;
I++;
var sItem = JSON.stringify(Item);
localStorage.setItem("State",sItem);
}
Егор, теперь у меня сложность с тем как генерировать этот объект...
Егор Живагин, если у меня есть подобный объект, то ф-я генерирующая этот объект при загрузке страницы, в моем понимании, делает следующее :
1. Создает в нужном мне месте теги
2. В созданный div вставляет содержимое из свойства объект "html"
3. Кол-во созданных div-ов определяет свойство объекта "count"
Вот если что сам объект
var Item = {
"tag": "div",
"html": "something html code",
"count": 10
};
Алексей Юдов, у вас есть код, который по клику на кнопку создаёт блок, правильно? Вынесите его в отдельную "создающую" функцию, если у вас её пока нет.
Я думаю, вам в localStorage вообще можно просто count хранить.
При загрузке страницы вы:
-- проверяете localStorage, считываете count
-- запускаете "создающую" функцию нужное кол-во раз.
Егор Живагин, посмотрите пожалуйста код. Как вам такая реализация?
JavaScript Code
var I = 0;
var Item = { "count": I };
function CreateNewItem() {
Item.count++;
var NewItem = document.createElement("div");
var Container = document.getElementById("items-container");
NewItem.classList.add("items");
NewItem.innerHTML = "<h1>Work!</h1>";
Container.appendChild(NewItem);
localStorage.setItem("ItemCount", Item.count);
}
function Build(Count) {
for (var i = 0; i < Count; i++){ CreateNewItem(); }
}
window.onload = function (){
var AddNewItem = document.getElementById("AddItem");
var CleanUpLocalStorage = document.getElementById("ClearLocalStorageButton");
I = localStorage.getItem("ItemCount", Item.count);
Build(I);
AddNewItem.onclick = function () {
CreateNewItem();
return false;
};
CleanUpLocalStorage.onclick = function () {
localStorage.clear();
};
};