¿Cómo conseguir que la variable JS mantenga su valor después de actualizar la página?
¿Es posible cambiar permanentemente una variable javascript? Por ejemplo, si establezco la variable X y la hago igual a 1. Luego, al hacer clic en un botón, la variable cambia a 2. ¿Cómo puedo hacer que esa variable permanezca en 2 al actualizar la página?
115
3
Esto es posible con
window.localStorage
owindow.sessionStorage
. La diferencia es quesessionStorage
dura mientras el navegador permanece abierto,localStorage
sobrevive más allá de los reinicios del navegador. La persistencia se aplica a todo el sitio web, no sólo a una página.Cuando necesites establecer una variable que deba reflejarse en la(s) siguiente(s) página(s), utiliza:
Y en cualquier página (como cuando la página se ha cargado), consígalo como:
.getItem()
devolveránull
si no hay valor almacenado, o el valor almacenado.Tenga en cuenta que sólo se pueden almacenar valores de cadena en este almacenamiento, pero esto puede superarse utilizando
JSON.stringify
yJSON.parse
. Técnicamente, cada vez que llames a.setItem()
, llamará a.toString()
sobre el valor y lo almacenará.La guía de almacenamiento del DOM de MDN (enlazada más abajo), tiene soluciones/polipastos, que acaban recurriendo a cosas como las cookies, si
localStorage
no está disponible.No sería una mala idea utilizar una mini biblioteca existente, o crear una propia, que abstraiga la capacidad de guardar cualquier tipo de datos (como literales de objetos, matrices, etc.).
Referencias:
Storage
- https://developer.mozilla.org/en-US/docs/Web/Guide/API/DOM/StorageLocalStorage
- https://developer.mozilla.org/en-US/docs/DOM/Storage#localStorageJSON
- https://developer.mozilla.org/en-US/docs/JSONTendrá que utilizar una cookie para almacenar el valor a través de la actualización de la página. Puede utilizar cualquiera de las muchas bibliotecas de cookies basadas en javascript para simplificar el acceso a las cookies, como esta
Si quieres soportar sólo html5 entonces puedes pensar en Storage api como localStorage/sessionStorage
Ejemplo: usando localStorage y cookies library
Puede hacerlo almacenando cookies en el lado del cliente.