Я создал многостраничную викторину, и я использую 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