I’m trying to store created dom element references inside localStorage, so that when I visit the page again, they will be itterated over and then displayed. I tried using JSON.stringfy, but this didn’t work as when I retrieved the item from localStorage, I just got empty objects. Here is my code:
const createTaskElements = () => {
const tasks = document.querySelector('#tasks');
const task = document.createElement('div');
const heading = document.createElement('h2');
const details = document.createElement('p');
const due = document.createElement('p');
const priority = document.createElement('p');
const button = document.createElement('button');
return {
tasks,
task,
heading,
details,
due,
priority,
button,
};
};
const taskAttributes = (
{ task, heading, details, due, priority, button },
folderID
) => {
task.className = `task ${folderID}`;
task.id = `task${count}`;
heading.innerHTML = document.querySelector('#title').value;
details.innerHTML = document.querySelector('#details').value;
due.innerHTML = `<strong>Due:</strong> ${
document.querySelector('#date').value
}`;
priority.innerHTML = `<strong>priority:</strong> ${
document.querySelector('#priority').value
}`;
button.setAttribute('type', 'button');
button.className = 'remove-task';
button.innerHTML = '<i class="fas fa-times fa-2x"></i>';
};
const taskAppend = ({
tasks,
task,
heading,
details,
due,
priority,
button,
}) => {
task.appendChild(heading);
task.appendChild(details);
task.appendChild(due);
task.appendChild(priority);
task.appendChild(button);
tasks.appendChild(task);
};
const createTask = (folderID) => {
count += 1;
const taskID = `task${count}`;
const taskElements = createTaskElements();
taskAttributes(taskElements, folderID);
taskAppend(taskElements);
foldersObj[folderID][taskID] = taskElements;
localStorage.setItem(folderID, JSON.stringify(foldersObj[folderID]));
};