Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

192
Visualizações
Localstorage resetting on refresh

I am currently attempting to learn Javascript and starting with a very basic incremental game where you click a button and it increases. I implemented a save button that properly saves to local storage, however upon refresh, it gets reset. This is the local storage after hitting save, however, it gets reset to 0 when the page is refreshed.

I wanted to implement save functionality in the following way (see loadGame() and saveGame()):

// JavaScript Document

var saveState = {
    food: 0
};

var GlobalFood = 0;

window.onunload = saveGame();
window.onload = loadGame();

function loadGame(){
    var loadSaveStateString = localStorage.getItem('saveState');
    saveState = JSON.parse(loadSaveStateString);
}

function saveGame(){
    var saveStateString = JSON.stringify(saveState);
    localStorage.setItem('saveState', saveStateString);
}

function tutorialFoodBtnFunc() {
    var fVal = document.getElementById("GlobalFood");
    GlobalFood++;
    fVal.innerHTML = GlobalFood;
    saveState['food'] = GlobalFood;
}

function tutorialFoodBtnFunc2() {
    var fVal = document.getElementById("GlobalFood");
    if(GlobalFood < 1)
    {
        var foodError = document.getElementById("foodErrorText");
        foodError.classList.add("fade-in");
        setTimeout(function (){
            foodError.classList.remove("fade-in");
        }, 2000)
    }
    else
    {
        GlobalFood--;
        fVal.innerHTML = GlobalFood;
        saveState.food = GlobalFood;
    }
}

Here's my HTML as well if it's relevant:

<html>
<head>
    <meta charset="utf-8">
    <title>Wilderness</title>
    <link rel="stylesheet" href="styling/tutorial.css">
    <script src="js/main.js"></script>
</head>
    <div id="page-wrapper">
        <body>
            <div id="nav">
                <p class="GlobalVals">Foodstuffs: </p><span class="GlobalVals" id = "GlobalFood">0</span>
            </div>
            <div id="tutorialBody">
                <button id="tutorialFoodBtn" onclick="tutorialFoodBtnFunc()">Gather Berries</button>
                <button id="tutorialFoodBtn2" onclick="tutorialFoodBtnFunc2()">Eat Berries</button>
                <p id="foodErrorText">You have no berries!!!</p>
                <button id="tutorialFoodBtn2" onclick="saveGame()">Save!!</button>
            </div>
        </body>
    </div>
</html>
about 4 years ago · Santiago Trujillo
1 Respostas
Responde à pergunta

0

First of all, onunload and onload should reference a function. (What you did is execute the function)

window.onunload = saveGame;
window.onload = loadGame;

Then, your code is properly loading the saveState, but you're not assigning it to your GlobalFood variable.

function loadGame(){
    var loadSaveStateString = localStorage.getItem('saveState');
    saveState = JSON.parse(loadSaveStateString);
    GlobalFood = saveState.food;
    var fVal = document.getElementById("GlobalFood");
    fVal.innerHTML = GlobalFood;
}
about 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda