【发布时间】:2019-12-05 20:25:23
【问题描述】:
我正在开发一个项目,该项目将接受用户输入并将其存储到 localStorage 的列表中。我希望能够在页面上列出其中的三个待办事项。
我已将代码放入三个单独的列中,但是当我尝试在其中提交信息时,似乎将所有列中的值添加到一个列表中。我并不是每次都使用 JS 或 Jquery,所以我一直在努力学习,但我很难过。这是我希望在三个单独的列中运行的代码。
我如何确保列表存储在三个不同的地方,并分别存储在 localStorage 中?
var list = JSON.parse(localStorage.getItem("todolist"));
// Checks for to dos in LS, if none starts with empty array
if (!Array.isArray(list)) {
list = [];
}
function putOnPage() {
$("#todo-list").empty(); // empties out the html
var insideList = JSON.parse(localStorage.getItem("todolist"));
if (!Array.isArray(insideList)) {
insideList = [];
}
// todos to page
for (var i = 0; i < insideList.length; i++) {
var p = $("<p>").text(insideList[i]);
var b = $("<button class='delete'>").text("x").attr("data-index", i);
p.prepend(b);
$("#todo-list").prepend(p);
}
}
// rtodos on page load
putOnPage();
$(document).on("click", "button.delete", function() {
var todolist = JSON.parse(localStorage.getItem("todolist"));
var currentIndex = $(this).attr("data-index");
// deletes items
todolist.splice(currentIndex, 1);
list = todolist;
localStorage.setItem("todolist", JSON.stringify(todolist));
putOnPage();
});
$("input[type='submit']").on("click", function(event) {
event.preventDefault();
// changes input to variable and clears input field
var val = $("input[type='text']").val();
$("input[type='text']").val("");
// adds to do to list and local storage
list.push(val);
localStorage.setItem("todolist", JSON.stringify(list));
putOnPage();
});
【问题讨论】:
-
对localStorage使用不同的key;为元素使用不同的 ID。
标签: javascript jquery html arrays json