Reputation: 115
I am trying to display an array from local storage but after refreshing the page when I hit the save button again the previous entries in local storage are replaced by the new ones and are not working correctly.
Js file:
let count = 0;
let countStr = []
let saveEl = document.getElementById("save-el")
let countEl = document.getElementById("count-el")
let resetBtn = document.getElementById("reset-btn")
let saveBtn = document.getElementById("save-btn")
let incrementBtn = document.getElementById("increment-btn")
const entriesFromLocalStorage = JSON.parse(localStorage.getItem("entries"))
saveEl.innerHTML = entriesFromLocalStorage
incrementBtn.addEventListener("click" , function(){
count = count + 1 ;
countEl.innerHTML = count;
})
saveBtn.addEventListener("click" , function(){
countStr.push(count)
saveEl.innerHTML = countStr
localStorage.setItem("entries", JSON.stringify(countStr))
count = 0;
countEl.innerHTML = 0;
})
resetBtn.addEventListener("click" , function(){
saveEl.innerHTML = "";
localStorage.clear()
})
HTML file:
<h1>People entered:</h1>
<h2 id="count-el">0</h2>
<button id="increment-btn">INCREMENT</button>
<button id="save-btn">SAVE</button>
<div class="entries">
<p class="prev-ent">Previous entries:</p>
<p id="save-el"></p>
</div>
<button id="reset-btn">Reset entries</button>
<script src="index.js"></script>
Upvotes: 0
Views: 791
Reputation: 3968
You can keep track of current and previous values in an object and store that object in local storage when you click save and retrieve same object when page loads.
Link to CodeSandBox
let count = 0;
let countStr = [];
let saveEl = document.getElementById("save-el");
let countEl = document.getElementById("count-el");
let resetBtn = document.getElementById("reset-btn");
let saveBtn = document.getElementById("save-btn");
let incrementBtn = document.getElementById("increment-btn");
const entriesFromLocalStorage = JSON.parse(localStorage.getItem("entries")) || {
current: 0,
previous: []
};
console.log(entriesFromLocalStorage);
saveEl.innerHTML = entriesFromLocalStorage.previous.toString() || 0;
incrementBtn.addEventListener("click", function() {
count = count + 1;
countEl.innerHTML = count;
});
saveBtn.addEventListener("click", function() {
console.log(entriesFromLocalStorage, "At Save");
countStr.push(count);
saveEl.innerHTML = countStr;
entriesFromLocalStorage.current = count;
entriesFromLocalStorage.previous.push(count);
localStorage.setItem("entries", JSON.stringify(entriesFromLocalStorage));
count = 0;
countEl.innerHTML = 0;
});
resetBtn.addEventListener("click", function() {
saveEl.innerHTML = "";
localStorage.clear();
});
<h1>People entered:</h1>
<h2 id="count-el">0</h2>
<button id="increment-btn">INCREMENT</button>
<button id="save-btn">SAVE</button>
<div class="entries">
<p class="prev-ent">Previous entries:</p>
<p id="save-el"></p>
</div>
<button id="reset-btn">Reset entries</button>
Link to CodeSandBox
Upvotes: 1
Reputation: 4434
let count = 0;
let countStr = []
let saveEl = document.getElementById("save-el")
let countEl = document.getElementById("count-el")
let resetBtn = document.getElementById("reset-btn")
let saveBtn = document.getElementById("save-btn")
let incrementBtn = document.getElementById("increment-btn")
const entriesFromLocalStorage = JSON.parse(localStorage.getItem("entries") || '[]')
// This is important
countStr = entriesFromLocalStorage;
saveEl.innerHTML = entriesFromLocalStorage
incrementBtn.addEventListener("click", function () {
count = count + 1;
countEl.innerHTML = count;
})
saveBtn.addEventListener("click", function () {
countStr.push(count)
saveEl.innerHTML = countStr
localStorage.setItem("entries", JSON.stringify(countStr))
count = 0;
countEl.innerHTML = 0;
})
resetBtn.addEventListener("click", function () {
saveEl.innerHTML = "";
localStorage.clear()
})
Upvotes: 1