Код: Выделить всё
window.onload = () => {
// Timer variables
let totalSeconds = 0;
let intervalId = null;
// Start button handler
const startBtn = document.getElementById('start-btn');
startBtn.addEventListener('click', () => {
// Start timer
intervalId = setInterval(startTimer, 1000);
// Destroy all iframes to stop video
document.querySelectorAll('iframe').forEach(iframe => iframe.src = '');
// Hide intro fieldset and show first puzzle
document.getElementById('introFieldset').style.display = 'none';
document.getElementById('flip').style.display = 'block';
document.getElementById('room1Fieldset').style.display = 'block';
});
// Timer function
function startTimer() {
totalSeconds++;
let minutes = Math.floor(totalSeconds / 60);
let seconds = totalSeconds % 60;
document.getElementById("minute").innerHTML = minutes;
document.getElementById("seconds").innerHTML = seconds;
if (totalSeconds >= 1800) { // 30 min
clearInterval(intervalId);
document.getElementById("message001").innerHTML = "Time's up!";
document.getElementById("message004").innerHTML = "Don't worry, you can carry on, time yourself.
";
document.getElementById("message008").style.display = "none";
}
}
// Scroll up function for Next buttons
function scrollUp() {
window.scrollTo({ top: 0, behavior: 'smooth' });
}
// Correct answers mapping
const answers = {
room1Input: 'toilet',
room2Input: 'stage',
room3Input: '9476',
room5Input: '2950',
room7Input: '170',
room8Input: '3415' // final answer
};
// Next button fieldset mapping
const nextMapping = {
room1Next: 'room2Fieldset',
room2Next: 'room3Fieldset',
room3Next: 'room5Fieldset',
room5Next: 'room7Fieldset',
room7Next: 'room8Fieldset',
escape: 'finalFieldset'
};
// Enable Next/Escape buttons when correct answer typed
Object.keys(answers).forEach(inputId => {
const input = document.getElementById(inputId);
// Special case for final input
const nextButtonId = inputId === 'room8Input' ? 'escape' : inputId.replace('Input', 'Next');
const nextBtn = document.getElementById(nextButtonId);
input.addEventListener('input', () => {
if (input.value.trim().toLowerCase() === answers[inputId].toLowerCase()) {
nextBtn.disabled = false;
} else {
nextBtn.disabled = true;
}
});
});
// Next button click handling
Object.keys(nextMapping).forEach(buttonId => {
const btn = document.getElementById(buttonId);
const nextFieldsetId = nextMapping[buttonId];
btn.addEventListener('click', () => {
// Hide current fieldset
btn.parentElement.style.display = 'none';
// Show next fieldset
document.getElementById(nextFieldsetId).style.display = 'block';
scrollUp();
// Special case for Escape button: stop timer and show time used
if (buttonId === 'escape') {
clearInterval(intervalId);
// Hide the timer display
const timerContainer = document.getElementById('flip');
if (timerContainer) timerContainer.style.display = 'none';
// Show escape time
const minutes = Math.floor(totalSeconds / 60);
const seconds = totalSeconds % 60;
const messageEl = document.getElementById('message007');
if (messageEl) {
messageEl.innerHTML = `You Escaped in: ${minutes} minute(s) and ${seconds} second(s)`;
}
}
});
});
Подробнее здесь: https://stackoverflow.com/questions/798 ... ne-browser