Что я делаю плохо с localStorage? - PullRequest
0 голосов
/ 29 апреля 2020

Я делаю таблицу результатов по времени, чтобы щелкнуть мышью, но сначала мне нужно сохранять локальное хранилище каждый раз, когда я вхожу в игру, но я не знаю, как я пробовал все, но это все еще не работает, мне нужно закончить sh это быстро, и мне нужна помощь ... в противном случае я бы каждый день пытался решить эту проблему самостоятельно, потому что я знаю, что это способ учиться .. Когда я нажимаю готовую кнопку, он говорит, что times.pu sh () не является функцией .

    let times = Array.from(
  { length: 3 }
)


        let interval2;

        // Timer CountUp
        const timerCountUp = () => { 
          let times = 0;
          let current = times;

          interval2 = setInterval(() => {
            times = current++
            saveTimes(times)
            return times
          },1000);
        }

        // Saves the times to localStorage
        const saveTimes = (times) => {
          localStorage.setItem('times', JSON.stringify(times))
        }


// Read existing notes from localStorage
const getSavedNotes = () => {
  const timesJSON = localStorage.getItem('times')

  try {
      return timesJSON ? JSON.parse(timesJSON) : []
  } catch (e) {
      return []
  }    
}

    //Button which starts the countUp
    start.addEventListener('click', () => {
      timerCountUp();
    })

    // Button which stops the countUp
    document.querySelector('#start_button').addEventListener('click', (e) => {
      console.log('click');
      times = getSavedNotes() 
      times.push({
        score: interval2
      })
      if (interval) {
        clearInterval(interval);   
        clearInterval(interval2); 
      }
    })

1 Ответ

0 голосов
/ 29 апреля 2020

Возможно, вам нужно изменить строку times = JSON.parse(localStorage.times || []) на times = JSON.parse(localStorage.times) || []. Это гарантирует, что в случае сбоя синтаксического анализа он все равно будет массивом.

Еще лучше обернуть их в try-catch на всякий случай если ваша строка JSON повреждена, проверьте, является ли время массивом в finally, если не установите его в пустой массив.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...