首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >待办事项列表JavaScript

待办事项列表JavaScript
EN

Stack Overflow用户
提问于 2022-01-28 18:37:25
回答 1查看 79关注 0票数 0

我正试着列一个待办事项清单,但我被困在当地的储藏室里。重新加载页面时不会显示任何内容。我猜想这是关于changeStorage()方法的,但是我不完全理解我做错了什么。

代码语言:javascript
复制
function addTask() {
    let addTaskButton = document.getElementById('add-task-button')
    let list = document.getElementById('task-list');
    let li = document.createElement('li');
    let checkbox = document.createElement('input');
    let taskText = document.createElement('span');
    let delButton = document.createElement('button');
    let btnText = document.createTextNode('Delete task');

    checkbox.addEventListener('change', changeStorage);
    checkbox.type = 'checkbox';
    checkbox.className = 'checkbox';
    taskText.innerText =  document.getElementById('input-task').value;
    taskText.className = 'task';
    delButton.className = 'delete-btn';
    delButton.onclick = deleteTask;
    addTaskButton.addEventListener('click', changeStorage);

    delButton.appendChild(btnText);
    li.appendChild(checkbox);
    li.appendChild(taskText);
    li.appendChild(delButton);
    list.appendChild(li);

    document.getElementById('input-task').value = '';
}

function changeStorage() {
    let tasks = document.getElementById('ul').innerHTML;
    localStorage.setItem('tasks', JSON.stringify(tasks));
}

function deleteTask () {
    this.parentNode.remove();
    changeStorage();
}

document.getElementById('add-task-button').addEventListener('click', addTask);

function loadList() {
    document.querySelector('ul').innerHTML = JSON.parse(localStorage.getItem("tasks")) || [];
}

window.addEventListener('load', loadList);
EN

回答 1

Stack Overflow用户

发布于 2022-01-28 19:14:29

这应该会将存储在localStorage中的内容更改为有效的JSON字符串,然后在加载时从其中重构LI元素。

代码语言:javascript
复制
function changeStorage() {
    let tasks = [...document.querySelectorAll("ul li")].map(t => t.innerHTML);
    localStorage.setItem('tasks', JSON.stringify(tasks));
}

function loadList() {
    document.querySelector('ul').innerHTML = (JSON.parse(localStorage.getItem("tasks")) || []).map(t => "<li>" + t + "</li>").join("");
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70898687

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档