Я делаю простую математическую игру, в которой с помощью 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');
}
}
Это перед запуском игры и всеми вышеперечисленными функциями.
вы должны изменить свой код вот так
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'). Большое спасибо!
После применения изменения, указанного с помощью hossein, также убедитесь, что соответствующий браузер поддерживает объект localStorage.