重新加载后本地存储重置
local storage resets after reload
我绝对是js新手。以下代码根据保存在 localStorage
.
中的用户输入创建一个对象数组
我想localStorage
在页面重新加载后保留数据。
我搜索并找到了使用的解决方案
localStorage.setItem("initData"+new Date().getTime(), JSON.stringify(movies))
这确实有效,但在这种情况下,我不能将所有对象都放在一个数组中。
<script>
let movies = [];
const addMovie = (ev)=>{
ev.preventDefault(); //to stop the form submitting
let movie = {
id: Date.now(),
title: document.getElementById('title').value,
sales: document.getElementById('sales').value
}
movies.push(movie);
document.forms[0].reset(); // to clear the form for the next entries
//document.querySelector('form').reset();
//for display purposes only
console.warn('added' , {movies} );
let pre = document.querySelector('#msg pre');
pre.textContent = '\n' + JSON.stringify(movies, '\t', 2);
//saving to localStorage
localStorage.setItem('initData', JSON.stringify(movies) );
let allsales = movies.map(({ sales }) => sales)
var allsalesnumbers = allsales.map(Number);
var sumSales = allsalesnumbers.reduce(function(pv, cv) { return pv + cv; }, 0);
console.log("Total of EU Sales " + sumSales );
}
document.addEventListener('DOMContentLoaded', ()=>{
document.getElementById('btn').addEventListener('click', addMovie);
});
</script>
LocalStorage只存储字符串,存储前需要对数组进行字符串化,读取前需要解析
let movies = JSON.parse(localStorage.getItem('movies')) || [];
//保存到localStorage:
localStorage.setItem('movies', JSON.stringify(电影));
我认为问题在于您没有使用旧的存储数据,只是在每次提交时用新数据覆盖它。尝试像这样初始化电影数组
const oldDataString = localStorage.getItem('initData')
const movies = JSON.parse(oldDataString || "[]") // if there is no items just parses an empty array
我绝对是js新手。以下代码根据保存在 localStorage
.
我想localStorage
在页面重新加载后保留数据。
我搜索并找到了使用的解决方案
localStorage.setItem("initData"+new Date().getTime(), JSON.stringify(movies))
这确实有效,但在这种情况下,我不能将所有对象都放在一个数组中。
<script>
let movies = [];
const addMovie = (ev)=>{
ev.preventDefault(); //to stop the form submitting
let movie = {
id: Date.now(),
title: document.getElementById('title').value,
sales: document.getElementById('sales').value
}
movies.push(movie);
document.forms[0].reset(); // to clear the form for the next entries
//document.querySelector('form').reset();
//for display purposes only
console.warn('added' , {movies} );
let pre = document.querySelector('#msg pre');
pre.textContent = '\n' + JSON.stringify(movies, '\t', 2);
//saving to localStorage
localStorage.setItem('initData', JSON.stringify(movies) );
let allsales = movies.map(({ sales }) => sales)
var allsalesnumbers = allsales.map(Number);
var sumSales = allsalesnumbers.reduce(function(pv, cv) { return pv + cv; }, 0);
console.log("Total of EU Sales " + sumSales );
}
document.addEventListener('DOMContentLoaded', ()=>{
document.getElementById('btn').addEventListener('click', addMovie);
});
</script>
LocalStorage只存储字符串,存储前需要对数组进行字符串化,读取前需要解析
let movies = JSON.parse(localStorage.getItem('movies')) || [];
//保存到localStorage:
localStorage.setItem('movies', JSON.stringify(电影));
我认为问题在于您没有使用旧的存储数据,只是在每次提交时用新数据覆盖它。尝试像这样初始化电影数组
const oldDataString = localStorage.getItem('initData')
const movies = JSON.parse(oldDataString || "[]") // if there is no items just parses an empty array