javascript - 如何使用 localStorage 构建简单的 JavaScript 待办事项列表

标签 javascript

我正在使用 DOM 方法构建一个简单的 JavaScript 待办事项列表,并尝试为列表项实现 localStorage。添加和删​​除项目时,localStorage 似乎可以正常运行。但是,在呈现列表项之前,undefined 一词会被抛出到屏幕上。知道为什么会发生这种情况吗?非常感激!

JS:

var ul = document.getElementById("myUl");

function add() {
  var item = document.getElementById("newItem").value;
  var itemTxt = document.createTextNode(item);
  var li = document.createElement("li");
  var btn = document.createElement("button");
  var btnx = document.createTextNode("x");
  btn.setAttribute("onclick", "remove()");
  btn.appendChild(btnx);
  li.appendChild(itemTxt);
  li.appendChild(btn);
  ul.appendChild(li);
}

function remove() {
  var task = this.event.currentTarget.parentNode;
  ul.removeChild(task);
}

ul.innerHTML = localStorage["list"];

setInterval(function(){
  localStorage["list"] = ul.innerHTML;
}, 1000);

HTML:

  <input id="newItem" />
  <button onclick="add()">add</button>
  <ul id="myUl">New List</ul>

最佳答案

我用注释更新了代码:

var ul = document.getElementById("myUl");

function add() {
  var item = document.getElementById("newItem").value;
  var itemTxt = document.createTextNode(item);
  var li = document.createElement("li");
  var btn = document.createElement("button");
  var btnx = document.createTextNode("x");
  btn.setAttribute("onclick", "remove()");
  btn.appendChild(btnx);
  li.appendChild(itemTxt);
  li.appendChild(btn);
  ul.appendChild(li);
  localStorage["list"] = ul.innerHTML // updating localstorage
}

function remove() {
  var task = this.event.currentTarget.parentNode;
  ul.removeChild(task);
  localStorage["list"] = ul.innerHTML // updating localstorage
}

if (localStorage["list"]) { // checking, if there is something in localstorage
  ul.innerHTML = localStorage["list"];
}

演示:https://codepen.io/anon/pen/dQpwpz

注意:将 html 放入 localStorage 中并不是最佳实践,但我相信您知道这一点。

关于javascript - 如何使用 localStorage 构建简单的 JavaScript 待办事项列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53254522/

相关文章:

Javascript:当对象拥有函数时,为什么在 apply 方法中传递相同的对象作为参数?

javascript - 当页面缩放(调整大小)时如何检测滚动到底部?

javascript - Vue 路由器、GitHub 页面和自定义域不能使用路由链接

javascript - request.session.regenerate 不起作用,未定义 'undefined'

javascript - jQuery 插件弄乱了 AJAX 结果

javascript - 使用 onload 将输入设置为焦点

javascript - node.js 需要一个 json 文件

javascript - 我怎样才能把这段代码变成一个jquery函数

javascript - 从 0 开始按 2 遍历字节

java - 重新审视 IEEE-754 double (64 位浮点)与长整型(64 位整数)