Mi problema es el error de JavaScript NaN. Todo funciona perfectamente en mi LocalHost (archivo: ///), pero tan pronto como lo subo, dice "NaN" en todas partes. No entiendo cuál podría ser la causa, este es mi primer proyecto con JavaScript.
Omití gran parte del código HTML, pero eso también se explica en JavaScript.
HTML:
<div class="coinsdisplay"> <input id="coins" type="text" disabled name="" value="0" class="coinInput"> </div> <div class="cps"> <p id="cps">0 Coins/s</p> </div> <script src="public/js/main.js"></script> <script> window.onload= loadGame(); </script>
JS:
var coincount = 0; var autoClick = 0; var computer = 0; var multiplier = 1; // Single Click function addCoin() { coincount = coincount + 1 update() } // Updater function update() { document.getElementById('coins').value = coincount; document.getElementById('cps').innerHTML = (((autoClick) + (computer*2))*multiplier) + " Coins/s"; //AutoClicker document.getElementById('amountAutoClick').innerHTML = autoClick; document.getElementById('cosAutoClick').innerHTML = ((autoClick+1) * 12) + " Coins"; //Computer document.getElementById('amountComputer').innerHTML = computer; document.getElementById('cosComputer').innerHTML = ((computer+1) * 15) + " Coins"; } function timer() { coincount = coincount + autoClick; coincount = coincount + computer*2; update() } setInterval(timer, 1000) // AutoClicker function buyAutoClick() { if (coincount >= ((autoClick+1) * 12)) { coincount = coincount - ((autoClick+1) * 12); autoClick = autoClick + 1; update() } } // Computer function buyComputer() { if (coincount >= ((computer+1) * 100)) { coincount = coincount - ((computer+1) * 50); computer = computer + 1; update() } } // SaveGame function saveGame() { localStorage.setItem("coincount", coincount); localStorage.setItem("autoClick", autoClick); localStorage.setItem("computer", computer); } setInterval(saveGame, 1000) function loadGame() { coincount = localStorage.getItem("coincount"); coincount = parseInt(coincount); autoClick = localStorage.getItem("autoClick"); autoClick = parseInt(autoClick); computer = localStorage.getItem("computer"); computer = parseInt(computer); update() }
Espero que alguien pueda ayudarme, les deseo a todos un buen día.
¿Llamas a la función loadGame
antes que a la función saveGame
? Si es así, es probable que el problema sea que todavía no hay nada guardado en localStorage. Entonces localStorage.getItem("something")
simplemente devuelve null
, y parseInt()
lo convierte en NaN
. Asegúrese de que su almacenamiento local esté lleno o de que tenga valores predeterminados como ese (observe el || 0
):
function loadGame() { coincount = localStorage.getItem("coincount") || 0; coincount = parseInt(coincount); autoClick = localStorage.getItem("autoClick") || 0; autoClick = parseInt(autoClick); computer = localStorage.getItem("computer") || 0; computer = parseInt(computer); update() }