【发布时间】:2018-02-28 20:25:55
【问题描述】:
我有一个问题。我有一个输入字段并将输入存储在本地存储中。单击时(在“添加”上),我正在向本地存储添加输入,并希望立即将其附加到我的 ul 元素中。我不能只附加当前输入,因为它会在页面重新加载时消失,但是当我从本地存储中获取项目时,它没有正确显示。我对此进行了研究,但无论我尝试了什么,我都会得到奇怪的结果。我包括了下面的代码,还做了一个 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>")
【问题讨论】:
-
试试改成
var todos = JSON.parse(localStorage.getItem("todos") || "[]"); -
每次点击按钮它都会添加一个li项到存储中,所以下次点击它会从本地存储中添加x个lis,你不只是想追加一个新的li每次点击时 var newTodos 的值?
-
您需要在
forEach循环之前执行$("#output").empty(); -
@Ryan Ive 更新了我的问题注册。你说的。问题是当我只添加新项目时——起初它看起来很好,但在页面刷新时它都消失了。那是我的问题 - 我想添加新项目,但希望显示整个列表
标签: javascript jquery append local-storage