https://stackoverflow.com/questions/...d-localstorage
Da questa pagina ho tratto il codice per il local storage. è presente anche la versione con cookie.
LOCAL STORAGE
Codice HTML:
<div>
<input type="checkbox" id="whatever-1" />This task
<input type="checkbox" id="whatever-2" />This task
<input type="checkbox" id="whatever-3" />This task
<input type="checkbox" id="whatever-4" />This task
<input type="checkbox" id="whatever-5" />This task
<input type="button" value="Save" onclick="save();" />
</div>
<script>
window.onload= function(){
var list = document.querySelectorAll(`[type*="checkbox"]`);
list.forEach( el => {
var checked = JSON.parse(localStorage.getItem(el.id));
document.getElementById(el.id).checked = checked;
});
}
save = function(){
var list = document.querySelectorAll(`[type*="checkbox"]`);
list.forEach( el => {
localStorage.setItem(el.id, el.checked);
console.log(el.id,el.checked);
})
}
</script>
È diventato questo:
Procedura corretta:
1) Si selezionano o deselezionano le caselle scelte
2) Si clicca sul tasto "Salva"
3) Si clicca sul link del salmo selezionato
Se non si procede in questo modo, si perdono le scelte effettuate
Codice HTML:
<div>
<input type="checkbox" id="salmiecantici-1" style="margin-right: 10px;" /><a href="/salmo-1-le-due-vie-delluomo" ><strong>Salmo 1</strong></a><hr />
<input type="checkbox" id="salmiecantici-2" style="margin-right: 10px;" /><a href="/salmo-2-il-messia-re-vittorioso"><strong>Salmo 2</strong></a><hr />
<input type="checkbox" id="salmiecantici-3" style="margin-right: 10px;" /><a href="/salmo-3-il-signore-mi-sostiene"><strong>Salmo 3</strong></a><hr />
<input type="checkbox" id="salmiecantici-4" style="margin-right: 10px;" /><a href="/salmo-4-rendimento-di-grazie"><strong>Salmo 4</strong></a><hr />
<input type="checkbox" id="salmiecantici-5" style="margin-right: 10px;" /><a href="/salmo-5-preghiera-del-mattino-per-aver-laiuto-del-signore"><strong>Salmo 5</strong></a><hr />
<input type="button" value="Salva" onclick="save();" />
</div>
<script>
window.onload= function(){
var list = document.querySelectorAll(`[type*="checkbox"]`);
list.forEach( el => {
var checked = JSON.parse(localStorage.getItem(el.id));
document.getElementById(el.id).checked = checked;
});
}
save = function(){
var list = document.querySelectorAll(`[type*="checkbox"]`);
list.forEach( el => {
localStorage.setItem(el.id, el.checked);
console.log(el.id,el.checked);
})
}
</script>
_______________________________________
VERSIONE COOKIE
Codice HTML:
<div>
<input type="checkbox" id="whatever-1" />This task
<input type="checkbox" id="whatever-2" />This task
<input type="checkbox" id="whatever-3" />This task
<input type="checkbox" id="whatever-4" />This task
<input type="checkbox" id="whatever-5" />This task
<input type="button" value="Save" onclick="save();" />
</div>
<script>
window.onload= function(){
var list = document.querySelectorAll(`[type*="checkbox"]`);
list.forEach( el => {
var checked = JSON.parse(accessCookie(el.id));
document.getElementById(el.id).checked = checked;
});
}
save = function(){
var list = document.querySelectorAll(`[type*="checkbox"]`);
list.forEach( el => {
createCookie(el.id, el.checked,1);//1 is the day to expire
console.log(el.id,el.checked);
})
}
function createCookie(cookieName, cookieValue, daysToExpire) {
var date = new Date();
date.setTime(date.getTime() + (daysToExpire * 24 * 60 * 60 * 1000));
document.cookie = cookieName + "=" + cookieValue + "; expires=" + date.toGMTString();
}
function accessCookie(cookieName) {
var name = cookieName + "=";
var allCookieArray = document.cookie.split(';');
for (var i = 0; i < allCookieArray.length; i++) {
var temp = allCookieArray[i].trim();
if (temp.indexOf(name) == 0)
return temp.substring(name.length, temp.length);
}
return "";
}
</script>
------------------------------------------------
Vorrei capire la differenza e cos'è meglio.
È più facile non perdere i local storage o i cookie?
Quanto tempo è questo: 24 * 60 * 60 * 1000
Meglio lasciar stare ed usarew il local storage così non devo nemmeno pensare alla cookie/privacy policy?
È buono questo codice? Dite che può andare?
Grazie mille!
Cliccare qui per vedere screenshot del risultato