Попытка сохранить данные на веб-сайте кликера - PullRequest
2 голосов
/ 01 октября 2019

Я пытаюсь сохранить переменную с именем score, которую вы используете снова и снова, независимо от того, когда вы обновляете. То, что я не могу понять, это то, что будет кодом для этого. Я попробовал несколько способов, но ни один из них, похоже, не работает вообще.

Это для моего кликерского сайта. Но когда я пытаюсь использовать JavaScript для его хранения, он не работает с window.onload, а также с onload=. Также мой груз может быть правильным, потому что у меня есть score = data с document.getElementById('points').innerHTML = score;.

Мой код показан ниже:

var score = 0;

setInterval(SaveData, 10);

setInterval(Click, 1000); // Every full second allow clicking ONE point.

function Click() {
  score++;
  document.getElementById('btn').onclick = function() {
    document.getElementById('demo').innerHTML = score;
    clearInterval(Click);
  }
}

function SaveData() {
  // What saves the variable score
  localStorage['save'] = btoa(JSON.stringify(score));
}

function LoadData() {
  score = JSON.parse(atob(localStorage['save']))
  document.getElementById('demo').innerHTML = score;
}

window.onload = function() {
  // When the window loads do this
  LoadData();
};

1 Ответ

2 голосов
/ 01 октября 2019

Измените эту строку в SaveData():

localStorage['save'] = btoa(JSON.stringify(score));

на эту:

localStorage.setItem('save', btoa(JSON.stringify(score)));

и эту строку в LoadData():

score = JSON.parse(atob(localStorage['save']))

наthis:

score = JSON.parse(atob(localStorage.getItem('save')));

Также нет необходимости обновлять событие с каждым кликом. Вы можете переместить этот код из функции Click():

document.getElementById('btn').onclick = function() {
  document.getElementById('demo').innerHTML = score;
  clearInterval(Click);
}

function Click() {
  score++;
}

И передать в clearInterval() значение идентификатора, которое вы получите от setInterval(), а не ссылку на функцию. Что-то вроде:

var timer = setInterval(Click, 1000);
clearInterval(timer);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...