gpt4 book ai didi

javascript - 如何使用localStorage保存数据

转载 作者:行者123 更新时间:2023-12-02 22:48:07 24 4
gpt4 key购买 nike

我正在做待办事项列表,并且将数据保存在todotask行和已完成中。内景 https://jsfiddle.net/6rqfd103/

I tried to save it as an array, I saved it, but couldn't get it outside and this is the code when I haven't done anything, show me how, I don't understand this place yet. explain to me. thank you very much

var newTaskInput = document.getElementById("new-task");
var addButton = document.getElementsByTagName("button")[0];
var todoTask = document.getElementById("incomplete-tasks");
var completeTask= document.getElementById("completed-tasks");

var createNewTaskElement = function(taskString) {
var listItem = document.createElement("li");
var checkBox = document.createElement("input");
var label = document.createElement("label");
var editInput = document.createElement("input");
var editButton = document.createElement("button");
var deleteButton = document.createElement("button");

checkBox.type = "checkbox";
editInput.type = "text";
editButton.innerText = "Edit";
editButton.className = "edit";
deleteButton.innerText = "Delete";
deleteButton.className = "delete";

label.innerText = taskString;

listItem.appendChild(checkBox);
listItem.appendChild(label);
listItem.appendChild(editInput);
listItem.appendChild(editButton);
listItem.appendChild(deleteButton);

return listItem;
}

var addTask = function() {
if(newTaskInput.value == ""){
alert("Nhap todoTask Item !");
return false;
}
var listItem = createNewTaskElement(newTaskInput.value);
todoTask.appendChild(listItem);
bindTaskEvents(listItem, taskCompleted);

newTaskInput.value = "";
return true;
}

var editTask = function() {
var listItem = this.parentNode;
var editInput = listItem.querySelector("input[type=text");
var label = listItem.querySelector("label");
var containsClass = listItem.classList.contains("editMode");

if(containsClass) {
label.innerText = editInput.value;
} else {
editInput.value = label.innerText;
}
listItem.classList.toggle("editMode");
}

var deleteTask = function() {
var listItem = this.parentNode;
var ul = listItem.parentNode;

ul.removeChild(listItem);
}

var taskCompleted = function() {
var listItem = this.parentNode;
completeTask.appendChild(listItem);
bindTaskEvents(listItem, taskIncomplete);
}

var taskIncomplete = function() {
var listItem = this.parentNode;
todoTask.appendChild(listItem);
bindTaskEvents(listItem, taskCompleted);
}

var bindTaskEvents = function(taskListItem, checkBoxEventHandler) {
console.log("Bind list item events");
var checkBox = taskListItem.querySelector("input[type=checkbox]");
var editButton = taskListItem.querySelector("button.edit");
var deleteButton = taskListItem.querySelector("button.delete");

editButton.onclick = editTask;

deleteButton.onclick = deleteTask;

checkBox.onchange = checkBoxEventHandler;
}

addButton.addEventListener("click", addTask);

for(var i = 0; i < todoTask.children.length; i++) {
bindTaskEvents(todoTask.children[i], taskCompleted);
}

for(var i = 0; i < completeTask.children.length; i++) {
bindTaskEvents(completeTask.children[i], taskIncomplete);
}

最佳答案

如果您正在测试/使用 Google Chrome,您可以使用 localStorage.setItem() 和 localStorage.getItem()。 .setItem() 创建一个保存到本地存储的对象。该方法接受两个参数,第一个是字符串格式的对象名称(选择您想要的任何名称),第二个是要进入对象内部的值。您提到您正在使用数组作为返回的项目, .setItem() 第二个参数可以采用数组。有一个细微差别,数据必须采用 JSON 格式。下面的例子。

const myArray = [1, 2, 3];
const myArrayToJson = JSON.stringify(myArray);
localStorage.setItem('myObjectName', myArrayToJson);

现在,当您刷新页面时,无论在代码中的何处将应用程序呈现到网页,您都需要使用 .getItem 方法,该方法采用一个参数。该参数是您上面创建的对象的名称。然后,您解析数据并在任何您想要的地方调用或渲染它。

const myFetchedArrayInJson = localStorage.getItem('myObjectName');
const myFetchedArrayParsed = JSON.parse(myFetchedArrayInJson);
--- Now do something with it.

希望这有帮助!

关于javascript - 如何使用localStorage保存数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58296257/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com