![](/img/trans.png)
[英]How do i make the data in the input feild of my form in next js stay after refresh of the page?
[英]How to make localstorage data stay on page after browser refresh
我目前正在创建一个待办事项应用程序,允许用户在表单中输入信息,提交后,信息显示为项目符号列表项。 我已经做到了,每次提交都保存到localStorage,但是如何在浏览器刷新后维护页面上的列表项?
这是我的 JS
const submitButton = document.querySelector('#stuff');
const ul = document.querySelector('ul')
const text = document.querySelector('#textbox');
const todoArr = []
// const todoArr = localStorage.getItem('todos') ? JSON.parse(localStorage.getItem('todos')):[]
submitButton.addEventListener('submit', function(e){
e.preventDefault();
if(text.value !== '') {
const addLi = document.createElement('li');
const deleteBtn = document.createElement('button');
deleteBtn.innerText = 'remove';
addLi.innerText = text.value;
addLi.appendChild(deleteBtn);
ul.appendChild(addLi);
// todoArr.push(text.value)
localStorage.setItem('todos', JSON.stringify(todoArr))
text.value = '';
}
})
ul.addEventListener('click', function(e) {
if(e.target.tagName === 'BUTTON') {
e.target.parentElement.remove();
} else if(e.target.tagName === 'LI'){
e.target.classList.toggle('strike-thru')
}
})
使用为列表创建新列表项的代码,并将其放入单独的函数中。 让我们调用该函数createTodoItem
。 当文档加载时,从localStorage
获取存储的待办事项并遍历每个值。 然后使用每个值调用createTodoItem
并传递值以创建一个新项目。
const submitButton = document.querySelector('#stuff');
const ul = document.querySelector('ul')
const text = document.querySelector('#textbox');
const storedTodos = localStorage.getItem('todos')
const todoArr = storedTodos !== null ? JSON.parse(storedTodos) : [];
function createTodoItem(value) {
const addLi = document.createElement('li');
const deleteBtn = document.createElement('button');
deleteBtn.innerText = 'remove';
addLi.innerText = value;
addLi.appendChild(deleteBtn);
ul.appendChild(addLi);
}
todoArr.forEach(createTodoItem);
还要修改您的submit
侦听器以使用新功能。 现在您已经获得了可以在脚本中的任何位置调用的可重用函数。
submitButton.addEventListener('submit', function(e){
e.preventDefault();
if(text.value !== '') {
createTodoItem(text.value);
todoArr.push(text.value)
localStorage.setItem('todos', JSON.stringify(todoArr))
text.value = '';
}
})
ul.addEventListener('click', function(e) {
if(e.target.tagName === 'BUTTON') {
e.target.parentElement.remove();
} else if(e.target.tagName === 'LI'){
e.target.classList.toggle('strike-thru')
}
})
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.