javascript - 如何使用来自 localstorage 的 jquery 将项目 append 到 DOM?

标签 javascript jquery append local-storage

我有一个问题。我有一个输入字段并将输入存储在本地存储中。单击(“添加”)时,我将输入添加到本地存储,并希望立即将其 append 到我的 ul 元素。我不能只 append 当前输入,因为它会在页面重新加载时消失,但是当我从本地存储获取项目时,它不会正确显示。我对此进行了研究,但无论我尝试什么,我总是得到奇怪的结果。我包含了下面的代码,还制作了一个 jsfiddle。非常感谢!

jsfiddle:https://jsfiddle.net/codingcodingcoding/41mztdnu/

html:

<input id="title"/>
<input id="text"/>
<button id="button">Add</button>
<ul id="output"></ul>

js:

$("#button").click(function () {
    var title = $("#title").val();
    var text = $("#text").val();
    var todos = JSON.parse(localStorage.getItem("todos")) || [];

    var newTodos = {
        "title": title,
        "text": text
    }
    todos.push(newTodos);

    localStorage.setItem("todos", JSON.stringify(todos))

    todos.forEach(function (todo) {
        $("#output").append("<li>" + todo.text + "</li>")
    })

})

更新:下面的代码确实显示了当前添加的项目,但在页面刷新时消失,因为只有待办事项列表是持久的,这里的“当前”不能是整个列表。

localStorage.setItem("todos", JSON.stringify(todos))
var current=JSON.parse(localStorage.getItem("info"))
$("#output").append("<li>" + current.text + "</li>")

最佳答案

创建另一个仅填充列表的函数,以便您可以在页面加载时立即使用它,这样它就不会以空列表开头。确保此函数在添加更多项目之前清空列表中的现有项目。

$("#button").click(function() {
  var title = $("#title").val();
  var text = $("#text").val();
  var todos = JSON.parse(localStorage.getItem("todos")) || [];
  var newTodos = {
    "title": title,
    "text": text
  }
  todos.push(newTodos);
  localStorage.setItem("todos", JSON.stringify(todos))
  populateList();
});

function populateList() {
  var todos = JSON.parse(localStorage.getItem("todos")) || [];
  $("#output").empty();
  todos.forEach(function(todo) {
    $("#output").append("<li>" + todo.text + "</li>")
  })
}

populateList();

https://jsfiddle.net/41mztdnu/7/

关于javascript - 如何使用来自 localstorage 的 jquery 将项目 append 到 DOM?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49037957/

相关文章:

string - 包含字符串文字的数组初始化

javascript - 读取文本文件并显示在网页中

javascript - D3 力图 - 固定不重叠的节点

jquery - 使用 npm 安装后如何在 Node 项目中添加 jquery?

javascript - 如何在循环中填写JSON?

jquery - 动态追加数据到div

javascript - 单击时将文本 append 到文本区域?

javascript - 无法加载需要配置路径和 shim 的 Handlebars

javascript - 无法将多个参数绑定(bind)到请求的内容

javascript - jQuery 点击不返回任何值