hola quiero almacenar un numero cuando su valor es 0
var count = 3; var count2 = "0"; var count3; var btn = document.getElementById("btn"); btn.onclick = function() { count--; btn.style.transform = "scale(2)"; setTimeout(function() { btn.style.transform = "scale(1)"; }, 0005); if(count === 0) { /* I want to store the result here in manner that even when the page reload the number remains the same ( 0 in that case ) */ var zero = localStorage.getItem(count); count3 = parseInt(count2); localStorage.setItem( count , count3 ); } } #btn { width : 300px; height : 300px; border : solid 2px red; border-radius : 50%; transition : .1s; } <button id="btn">Click me</button>Pero no necesito afectar count3 para contar, ya que count ya está configurado en 0 :( pero no puedo afectar los números. Creo que solo hay una cadena en la 'clave' para localStorage.
Como puedo hacer eso ?
localStorage.setItem( cuenta , cuenta3 )
Esto está mal. Deberías escribir
localStorage.setItem("dónde", valor);
Entonces, en lugar de establecer el elemento en la clave igual a la variable count , debe establecer el valor en la clave "count" , que es una cadena. De lo contrario, cada vez que cambie la count de enteros, almacenará el nuevo valor ( count3 ) en un lugar nuevo.
Cuando vuelve a cargar la página, el count de enteros intenta obtener la información almacenada en la clave 3 .
Además, count === 0 también podría escribirse como count == 0 , por lo que primero no verifica si count es un número entero, y en su lugar acepta cadenas (y booleanas, indefinidas y nulas).
EDITAR: fragmento agregado como ejemplo. Refactoricé el código para que sea más legible, comenté localStorage para que pueda ejecutar el fragmento en Stack Overflow, y asumí que el recuento no puede ser inferior a 0.
Como beneficio adicional, count2 y count3 mientras cambiaba setTimeout de 0.005 (5ms es el mínimo de todos modos) a 50ms (la mitad de 0.1s que está en la transición).
var storedCount = getStoredCount(); const GOT_PREVIOUS_VALUE = storedCount != null; var count = (GOT_PREVIOUS_VALUE) ? storedCount : 3; var btn = document.getElementById("btn"); btn.onclick = changeCount; function changeCount() { if (count > 0) { count--; scaleButton(); storeCount(); console.log({count}) } } function scaleButton() { btn.style.transform = "scale(2)"; setTimeout(function() { btn.style.transform = "scale(1)"; }, 50); } function getStoredCount() { return localStorage.getItem('count') ; } function storeCount() { localStorage.setItem('count', count); } #btn { width: 300px; height: 300px; border: solid 2px red; border-radius: 50%; transition: .1s; } <button id="btn">Click me</button>La clave para el almacenamiento local es usar solo String. Puede definir una función para analizar la clave en cualquier.... Cuando la página se vuelve a cargar, no se puede borrar loacalStorage. Entonces puede hacerlo como var key = parse(localStorage.getitem(count)) en su función definida.