Викторина и SessionStorage: Как предотвратить накопление точек с помощью кнопки «назад»?Javascript

Форум по Javascript
Ответить
Anonymous
 Викторина и SessionStorage: Как предотвратить накопление точек с помощью кнопки «назад»?

Сообщение Anonymous »

Я создал многостраничную викторину, и я использую API SessionStorage для расчета очков и отображения окончательного балла на последней странице. Каждый раз у меня есть первая страница с викториной. < /P>



Answer one



Answer two



MAnswer three






const handleSubmit = function() {
const check1 = document.getElementById('q4resp1').checked;
const check2 = document.getElementById('q4resp2').checked;
const check3 = document.getElementById('q4resp3').checked;
const q4 = {
1: check1,
2: check2,
3: check3,
}
window.sessionStorage.setItem('q1', JSON.stringify(q1));
window.location.href = 'question-1-answer.html';
}
buttons.forEach(button => {
button.addEventListener('click', (e) => {
e.preventDefault();
handleSubmit();
})
});

< /code>
Затем вторая страница с ответом: < /p>

const previousChecks = JSON.parse(window.sessionStorage.getItem('q1'));
let score = Number(window.sessionStorage.getItem('score'));
if (!previousChecks[3]) {

score += 1;

window.sessionStorage.setItem('score', String(score));
}

< /code>
Поэтому я имею две страницы для каждого шага викторины. (Одна страница вопросов, одна страница ответа, одна страница вопросов, одна страница ответов и т. Д.). < /p>
На самом конце я указываю окончательный счет.
const score = window.sessionStorage.getItem('score');

document.getElementById('result').innerHTML = score === 0 ? 0 : ((score *100 ) / 5) + '%';


< /code>
Проблема: как только викторина завершена, если я нажму кнопку «Назад» браузера, чтобы вернуться к последнему вопросу (так что две страницы назад), она автоматически займет предыдущий пункт, сохраненный в сеансе и добавит его к окончательному счету. Отменяет накопленные точки для вопросов 4 и 5, и так далее. Это для обеспечения надежного результата и никогда не превышать 100%. Должен ли я нацелиться на страницу вопроса или страницу ответов? Как я могу сделать так, чтобы точки были отменены, если бы они были, но не забрали, если их не было?
Любая помощь будет оценена.

Подробнее здесь: https://stackoverflow.com/questions/797 ... back-butto
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Javascript»