javascript - 使用本地存储重新加载后如何使 todolist 保留
问题描述
我编写了这么多代码,但不知道如何使用 localstorage,所以在重新加载/刷新时我不必在浏览器中丢失我的 todolist。
这是我已经使用 savetodos 功能将项目设置为本地存储的代码
var form = document.querySelector('form')
var ul = document.querySelector('ul')
var button = document.querySelector('#button');
var input =
document.querySelector('#item');
var clear =
document.querySelector('#clear');
var savedToDos = []
//this makes list item
var liMaker = text => {
var li = document.createElement('li');
li.textContent = text;
ul.insertBefore(li, ul.childNodes[0])
}
form.addEventListener('submit', function(e) {
e.preventDefault()
liMaker(input.value)
input.value = ''; }
);
clear.addEventListener('click', remove);
//function remove to remove list item
function remove(){
saveToDos();
while (ul.firstChild) {
ul.removeChild(ul.firstChild);
}
}
function saveToDos() {
var items =
ul.getElementsByTagName("li");
for (var i = 0; i < items.length; ++i) {
savedToDos.push(
items[i].innerHTML);
}
localStorage.setItem('savedValues', savedToDos);
}
<div class='container'>
<h1> New todo list</h1>
<form>
<input type='text' id='item'
required>
<ul id="myList"></ul>
<button id='button'>add</
button> </form>
<button id="clear">Clear</
button>
</div>
解决方案
您可以按以下方式处理它:
- 添加时将输入值保存到本地存储
- 如果本地存储中有项目存储,则在页面加载时填充列表
- 当用户单击清除按钮时,从本地存储中删除所有项目
这可能是这样的:
<div className='container'>
<h1> New todo list</h1>
<form>
<input type='text' id='item' required>
<ul id="myList"></ul>
<button id='button'>add</button>
</form>
<button id="clear">Clear</button>
</div>
<script>
var form = document.querySelector('form')
var ul = document.querySelector('ul')
var button = document.querySelector('#button');
var input = document.querySelector('#item');
var clear = document.querySelector('#clear');
var savedToDos = []
//this makes list item
var liMaker = text => {
var li = document.createElement('li');
li.textContent = text;
ul.insertBefore(li, ul.childNodes[0])
}
form.addEventListener('submit', function(e) {
e.preventDefault()
liMaker(input.value)
saveToDo(input.value)
input.value = '';
});
clear.addEventListener('click', remove);
//function remove to remove list item
function remove(){
while (ul.firstChild) {
ul.removeChild(ul.firstChild);
}
localStorage.removeItem('savedValues')
}
function saveToDo(item) {
var storedItems = localStorage.getItem('savedValues');
storedItems = storedItems ? JSON.parse(storedItems) : [];
storedItems.push(item);
localStorage.setItem('savedValues', JSON.stringify(storedItems))
}
// populate the list on page load from localStorage
var storedItems = localStorage.getItem('savedValues');
if (storedItems) {
JSON.parse(storedItems).forEach(function(item) {
liMaker(item)
})
}
</script>
推荐阅读
- optimization - PyTorch - 通过滥用损失函数(负对数似然)获得卓越的模型性能?
- java - 如何使用 Oracle 每次调用提供数千行来提高搜索 API 性能
- python - 如何缓冲pyplot图
- c# - 为什么这个调用对于编译器来说是模棱两可的?
- spring - 为什么在其他测试类上需要 DirtiesContext 来模拟具有 JMS 侦听器的类的 bean 依赖关系
- paypal - 我如何处理 PayPal 公钥?
- sql - 使用2个条件访问前N个的sql移动平均值
- python-3.x - 通过重复获得不同的数字集
- html - 如何仅使用 HTML/CSS 将可折叠内容居中在表格行下?
- java - 选择帐户时不会出现 Google 注册弹出窗口