Локальное хранилище JavaScript не сохраняет или не получает информацию

Я делаю простую математическую игру, в которой с помощью Math.random () генерируются два числа и случайный знак, плюс или минус. Пользователь должен предоставить ответ в поле ввода. Проблема, с которой я сталкиваюсь, заключается в том, что я пытаюсь сохранить балл и высокий балл в локальном хранилище, а затем получить его при следующей перезагрузке страницы. Ошибок нет, просто переменные не определены. По другой странной причине highScore всегда не определен. Как сделать так, чтобы localStorage правильно сохранял score и highScore и загружал с перезагрузкой на следующей странице без undefined, правильно?

<div class='window' id='gamesDIV'>
        <h1 id='scoreEnd'>Score</h1>
        <h1 id='highScore'>HightScore</h1>
        </center>
        <div class='button' onClick='prepareGame()' id='specialRed'>Start</div>
        <div id='gameWindow'>
            <div style='white-space: nowrap;'>
                <p id='expression'>5-3</p>
            </div>
            <div id='score'>0</div>
            <div id='time'>5</div>
            <input onchange='CheckResult()' onkeyup='CheckResult()' id='answer' placeholder='Answer' type='number'></input>
            <center>



        </div>
    </div>

var DP = 10;
    var topUp = 2;
    var result;
    var score = window.localStorage[score];
    var game = false;
    var Gsec = 5;
    var lastExp = null;
    var TimerFnc;
    var highScore = window.localStorage[highScore];
    var scoreEndValue = window.localStorage[score];
    $('div#percentage').hide();
    $('div#SR').hide();
    $('div#gamesDIV').hide();
    $('div#gameWindow').hide();
    document.getElementById('scoreEnd').innerHTML = window.localStorage[score];
    document.getElementById('highScore').innerHTML = window.localStorage[highScore];

    function prepareGame() {
        document.getElementById('answer').value = null;
        score = 0;
        $('div#specialRed').hide();
        $('div#menu').hide();
        $('div#gameWindow').show();

        $("div#gamesDIV").css("margin-left", "0");
        $("div#gamesDIV").css("width", "100vw");

        $("div#gamesDIV").css("background-color", "black");
        Start();
        TimerFnc = setInterval(Timer, 1000);
        game = true;
        Gsec = 5;
    }

    function Timer() {
        if (Gsec > 0) {
            Gsec--;
            console.info("Remaining seconds", Gsec);
            // document.getElementById('time').innerHTML = "5";
            document.getElementById('time').innerHTML = Gsec;

        } else {
            game = false;
            EndGame();
        }
    }

    var num1, num2;

    function Start() {
        game = true;
        console.info('Starting generating numbers.');
        num1 = Math.round(Math.random() * topUp);
        num2 = Math.round(Math.random() * topUp);
        var sign = Math.round(Math.random() * 2);
        console.info(num1, num2, sign);
        if (sign == 1) {
            sign = '+';
            result = num1 + num2;
        } else {
            sign = '-';
            if (num1 <= num2) {
                num1 = Math.round(Math.random() * topUp);
                num2 = Math.round(Math.random() * (num1));
                result = num1 - num2;
            } else {
                result = num1 - num2;
            }
        }
        console.info(num1, num2, sign);
        if (lastExp == (num1 + sign + num2)) {
            Start();
        } else {
            document.getElementById('expression').innerHTML = num1 + sign + num2;
            lastExp = num1 + sign + num2;
        }
    }

    function EndGame() {
        clearInterval(TimerFnc);
        if (score > highScore) {
            highScore = score;
        }
        document.getElementById('highScore').innerHTML = "Highscore: " + highScore;
        document.getElementById('scoreEnd').innerHTML = "Score: " + score;

        $('div#specialRed').show();
        $('div#menu').show();
        $('div#gameWindow').hide();

        $("div#gamesDIV").css("margin-left", "5vw");
        $("div#gamesDIV").css("width", "95vw");

        $("div#gamesDIV").css("background-color", "white");
        console.info(score, highScore);

        window.localStorage['highScore'] = highScore;

        window.localStorage['score'] = score;

        console.info(score, highScore);


    }

    function CheckResult() {
        if (result == document.getElementById('answer').value) {
            Gsec = 5;
            //  document.getElementById('time').innerHTML = "5";
            document.getElementById('time').innerHTML = Gsec;
            console.info('True');
            topUp = Math.round(topUp * 1.4);
            document.getElementById('answer').value = null;
            Start();
            score = score + 1;
            document.getElementById('score').innerHTML = score;
        } else {
            console.info('false');
        }
    }

Это перед запуском игры и всеми вышеперечисленными функциями.

Это после игры

Это после перезагрузки страницы

После применения изменения, указанного с помощью hossein, также убедитесь, что соответствующий браузер поддерживает объект localStorage.

jidexl21 27.10.2018 10:41
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
1
47
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

вы должны изменить свой код вот так

https://developer.mozilla.org/en-US/docs/Web/API/Window/localStorage#Example

localStorage.setItem('myCat', 'Tom');

var cat = localStorage.getItem('myCat');

Оно работает. Проблема заключалась в том, что я написал localStorage.getItem (highScore) вместо localStorage.getItem ('highScore'). Большое спасибо!

Atanas Bobev 27.10.2018 13:51

Другие вопросы по теме