gpt4 book ai didi

javascript - 带有 localStorage 的待办事项应用程序

转载 作者:行者123 更新时间:2023-11-27 23:19:19 26 4
gpt4 key购买 nike

我目前正在编写一个简单的 vanilla JavaScript 待办事项应用程序。一切看起来都很好,但是当涉及到将数据保存在新的 localStorage 中时,我做不到,我从未使用过 localStorage,我'我已经阅读了很多文章,当我尝试简单的东西时它可以工作,但我无法使我的应用程序正常工作。我想将输入的数据保存在 REFRESH 上,它不会消失,就像现在这样...这是应用程序的链接

**** 我想用 VANILLA JAVASCRIPT,而不是 JQUERY ****

My to-do app here!

所以基本上,如果用户做了几个待办事项,并且在刷新时,我希望所有内容都保留下来,就像下面的图片。

enter image description here

HTML:

<body>
<div class="holder">
<div>
<input type="text" />
</div>

<button id="add">Add</button>

<div class="results"></div>
</div>

</body>

JS:

document.addEventListener('DOMContentLoaded',function(){

let holder = document.querySelector('.holder'),
addBtn = document.querySelector('#add'),
removeBtn = document.querySelector('#remove'),
resultBox = document.querySelector('.results');

let input = document.getElementsByTagName('input')[0];


function setAttributes(element,attrs){
for(let i in attrs){
element.setAttribute(i,attrs[i]);
}
}

setAttributes(input,{
'placeholder' : 'Enter To-Do',
'name' : 'todo'
});

function addtoBtn(){

addBtn.addEventListener('click',function(event){

if(input.value !== ''){
let openingDiv = '<div class="todo"><span>';
let closingDiv = '</span><button class="edit">Edit</button><button class="save">Save</button><button class="removeBtn">Remove</button></div>';

resultBox.innerHTML += openingDiv + input.value + closingDiv;
input.value = '';
event.preventDefault();


} else{
alert('Enter To-do!');
}

let innerBtn = document.querySelectorAll('.removeBtn');
let editBtn = document.querySelectorAll('.edit');
let saveBtn = document.querySelectorAll('.save');

for(let collection = 0 ; collection < saveBtn.length ; collection++){
saveBtn[collection].style.display = "none";
}

function removeToDo(){

this.parentNode.style.display = 'none';
}

for(let k = 0 ; k < innerBtn.length ; k++){
innerBtn[k].addEventListener('click',removeToDo);
}

function startContentEdit(){
this.previousSibling.contentEditable = true;
this.previousSibling.style.padding = "10px";
this.previousSibling.style.boxShadow = "0 0 15px #fff";
this.previousSibling.style.borderRadius = "10px";
this.previousSibling.style.transition = "all .4s";

this.style.display = "none";

for(let el = 0 ; el < saveBtn.length ; el++){
this.nextSibling.style.display = 'inline-block';
}
}

for(let j = 0 ; j < editBtn.length ; j++){
editBtn[j].addEventListener('click',startContentEdit);
}

function saveContentEdit(){
this.style.display = 'none';

for(let j = 0 ; j < editBtn.length ; j++){

this.previousSibling.style.display = "inline-block";

this.parentNode.firstElementChild.style.display = "block";
this.parentNode.firstElementChild.contentEditable = false;
this.parentNode.firstElementChild.style.padding = "0px";
this.parentNode.firstElementChild.style.boxShadow = "0 0 0";
}
}

for(let x = 0 ; x < saveBtn.length ; x++){
saveBtn[x].addEventListener('click',saveContentEdit);
}

});
}

addtoBtn();
});

正如我所说,我看了很多文章,但找不到解决方案的任何答案。抱歉,这是我的第一个 javascript 应用程序,几乎所有的东西都在里面工作 :D 我有点兴奋,所以我想让它完全工作。

简历:

是否可以使用 localStorage 或 sessionStorage 来保存新生成的

<div class="todo></div>容器?

最佳答案

使用本地存储其实很简单:给自己一个引用:

store = window.localStorage;

然后您可以像使用任何其他键值对容器一样在其中存储内容:

store[<key>] = <value>; //or alternatively:
store.setItem(<key>, <value>);

并再次检索值:

val = store[<key>]; //or alternatively:
val = store.getItem(<key>);

要将您的 javascript 对象保存为存储中的字符串,我建议使用 JSON.stringify() 和 JSON.parse(),如下所示:

store.setItem("todos", JSON.stringify(todos));
todos = JSON.parse(store.getItem("todos"))

这里的“待办事项”几乎可以是任何没有循环引用的东西,因为这会混淆 JSON 解析器;>

关于javascript - 带有 localStorage 的待办事项应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41803840/

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