Member 14719507 Ответов: 0

Испортил мой код, локальное хранилище работало, теперь оно снова не работает, понятия не имею, что изменилось


Я пытался установить локальное хранилище лучших игровых времен, поэтому создал пустой массив `gBestScores- и сравнил значение последнего лучшего результата с текущим,
и в зависимости от результата я либо толкаю его, либо нет в массив.

Локальное хранилище должно было его сохранить. Сохранение не происходит, и массив остается пустым. Этот `currScore- показывает правильное содержание часов.
`lastBestScore- это не определено. Iv'e старался изо всех сил кодировать 2 стартовых раза, чтобы -1 не возвращался как неопознанный, это не сработало, и он работает заранее, не делая этого

сравнение и хранение работали, я понятия не имею, что я изменил, ctrl-Z не удалось спасти меня,
надеюсь, ты сможешь.

edit: я сделал еще одну проверку, массив переписывается на 0, когда функции в init происходят, даже с жестко закодированными значениями, понятия не имею, почему

`var gBestScores =[]`

в ините у меня есть:
var retrievedData = localStorage.getItem("scores");
        gBestScores = JSON.parse(retrievedData);
        bestScore.innerHTML = gBestScores[gBestScores.length - 1]

все остальное:
function checkGameStatus() {
        // debugger
        var currScore = result.innerHTML
        var lastBestScore = gBestScores[gBestScores.length-1]
        if ((gLevel.SIZE ** 2 - gLevel.MINES) === gGame.shownCount && gLevel.MINES === gGame.markedCount) {
            gElBtn.innerHTML = WIN
            gGame.isOn = true
            stopwatch.stop()
            if (currScore > lastBestScore) {
                gBestScores.push(currScore)
            }
        }
        else if (gGame.isOn === true) {
            gElBtn.innerHTML = SAD
            stopwatch.stop()
            if (currScore > lastBestScore) {
                gBestScores.push(currScore) 
            }
        }
        localStorage.setItem("scores", JSON.stringify(gBestScores));
        bestScore.innerHTML = lastBestScore
    }


Что я уже пробовал:

попробовал отладку, она действительно возвращается как нулевая, понятия не имею, как это исправить, так как раньше она работала

Gerry Schmitz

Попробуйте печенье.

ZurdoDev

Отладьте код и проверьте localStorage сразу после записи в него.

gggustafson

Могу я предложить вам переработать ваш дизайн. В вашем checkGameStatus вы выполняете слишком много действий (правило состоит в том, чтобы написать оператор, описывающий, что делает метод; если он включает "и", "когда", "после" и т. д., Ваш метод должен быть разбит). Я бы переместил все действия localStorage в их собственные методы (например, get_local_storage, save_local_storage). Это значительно облегчит отладку. Это означает, что checkGameStatus должен вызвать get_local_storage, выполнить некоторые сравнения и, при необходимости, вызвать save_local_storage. Кроме того, используйте параметры, они локализуют значения внутри вызываемого метода.

0 Ответов