我目前正在构建一个待办事项列表应用程序,并且我已经使用 localStorage API 保存了数据。
但是,每当我 console.log 时,所需的数据就会出现在控制台中,但它仍然没有保存在 DOM 中。
我还添加了该getItem()
功能并将其登录到控制台,我仍然可以在控制台中查看它,在这里找到:
控制台中的getItem内容
但它只是不存储在浏览器中
看到这一点,您倾向于认为它应该存储在 DOM 中,并且在重新加载后内容仍然存在,但这里的情况并非如此。
下面的这个函数将一个新项目添加到列表中,它也会删除和划掉已完成的项目:
let id = 0;
function addTaskFunc() {
const aTask = `
<div class="task" id="task-${id}">
<button class="done__btn">
<i class="far fa-check-square"></i>
</button>
<p>${box.value}</p>
<button class="priority">Make priority</button>
<button class="cancel__btn">
<i class="far fa-times-circle"></i>
</button>
</div>
`;
const x = box.value;
if (x) {
taskList.insertAdjacentHTML('afterbegin', aTask);
box.value = '';
;
let cid = id;
const cancelBtn = document.querySelector(`#task-${id} .cancel__btn`);
cancelBtn.addEventListener('click', () => {
deleteItem(cid);
});
let cid2 = id;
// code for marking out an item as done
let cid3 = id;
// code for appending an item to the top of DOM
let cid4 = id;
persistData(cid4);
readData(cid4);
id++;
}
}
newTask.addEventListener('click', addTaskFunc); // Button to activate the function
persistData = id => {
const el = document.querySelector(`#task-${id}`);
localStorage.setItem('addedTasks222', el.innerHTML);
};
readData = id => {
const el = document.querySelector(`#task-${id}`);
const saved = localStorage.getItem('addedTasks222');
if (saved) el.innerHTML = saved;
console.log(el.innerHTML); // This line of code appears in the console
}
我也尝试在 addTaskFunc 中这样做:
const r = document.querySelector(`#task-${id} .task`);
r.addEventListener('load', () => {
persistData(cid4);
readData(cid4);
});
当我使用上面的方法尝试时,我在控制台中收到错误代码:无法读取 null 的 addEventListener 的属性。
我觉得某处有问题,但我似乎无法找出我错过的地方。
最后一件事,localStorage 似乎只将一项存储到密钥中。我需要一个循环来解决这个问题吗?