Я создаю приложение, в котором пользователь должен нажимать на красный фон, чтобы набрать очки. Конечная цель - создать игру типа «крот». Я создал функцию, чтобы красный фон появлялся с интервалом в 1 секунду, а счет увеличивался всякий раз, когда я щелкаю и применяю класс везде, где есть красный фоновый класс. Однако у меня возникают проблемы с остановкой работы selectBox () и selectBox () с counter.inner HTML === '00: 10: 01 '.
Может кто-нибудь сказать мне, где я не прав?
const box = document.querySelectorAll('.box');
const startBtn = document.querySelector('#start');
const roachBox = document.querySelector('.roach-box');
const score = document.querySelector('#score');
const stopwatch = document.querySelector('#stopwatch');
const winnerText = document.querySelector('.winner-text');
const playAgainBtn = document.querySelector('#play-again');
const boxArray = Array.from(box);
let newClass = null;
startBtn.addEventListener('click', startGame);
function startGame() {
setInterval(selectBox, 1000);
addScore();
begin();
setInterval(checkScore);
startBtn.classList.add('hide');
}
function selectBox() {
if (newClass) newClass.classList.toggle('red');
let randomNum = Math.floor(Math.random() * 6);
let randomClass = boxArray[randomNum];
randomClass.classList.add('red');
newClass = randomClass;
}
roachBox.addEventListener('click', function(e) {
Array.from(boxArray).forEach((e) => e.classList.remove('match'));
e.target.classList.add('match');
});
function addScore() {
roachBox.addEventListener('click', function(e) {
if (e.target.classList.contains('red') && e.target.classList.contains('match')) {
score.innerHTML = parseInt(score.innerHTML, 10) + 1;
}
});
}
let ms = 0,
s = 0,
m = 0;
let timer;
function begin() {
timer = setInterval(run, 10);
}
function run() {
counter.textContent = (m < 10 ? '0' + m : m) + ': ' + (s < 10 ? '0' + s : s) + ': ' + (ms < 10 ? '0' + ms : ms);
ms++;
if (ms == 100) {
ms = 0;
s++;
}
if (s == 60) {
s = 0;
m++;
}
}
function checkScore() {
let scoreInnerText = score.innerText;
if (counter.innerHTML === '00: 10: 01' && +scoreInnerText >= 5) {
winnerText.innerHTML = 'Wohooo! You are the king of roach killing!';
playAgainBtn.classList.remove('hide');
} else if (counter.innerHTML === '00: 10: 01' && +scoreInnerText < 5) {
winnerText.innerHTML = 'Uhoh this does not seem to be your strong suit :(';
playAgainBtn.classList.remove('hide');
}
}
playAgainBtn.addEventListener('click', playAgain);
function playAgain() {
window.location.reload();
}