Консоль выдает ошибку: Uncaught TypeError: Cannot read properties of undefined (reading 'color') at secondColor at HTMLImageElement.
Есть три стадии показа карт. При нажатии на кнопку, показываются сначала карты первой стадии, потом второй и третьей. Ошибка вылазит при переходе со второй стадии на третью. Раньше такая же ошибка, только писало "at firstColor", выскакивала при переходе с первой стадии на вторую, но эта ошибка решилась путем обертки кода в инструкцию if
Вот сам код:
deck.addEventListener('click', () => {
img.style.display = 'block';
if (ancientCards[0].classList.contains('active') == true && levelDifficulty[0].classList.contains('active') == true) {
if (!firstStageText.classList.contains('done')) {
let randomNum = Math.floor(Math.random() * ((firstStage.length - 1) - 0 + 1) ) + 0;
let num = randomNum;
function firstColor() {
if (firstStage[num].color == 'brown') {
firstBrown.textContent -= 1;
return 'brown';
}
if (firstStage[num].color == 'blue') {
firstBlue.textContent -= 1;
return 'blue';
}
if (firstStage[num].color == 'green') {
return 'green';
}
}
lastCard.innerHTML = `<img class = "last-card" src='../assets/MythicCards/${firstColor()}/${firstStage[num].cardFace}'>`;
firstStage.splice(num, 1);
}
if (firstStageText.classList.contains('done')) {
let randomNum2 = Math.floor(Math.random() * ((secondStage.length - 1) - 0 + 1) ) + 0;
let num2 = randomNum2;
function secondColor() {
ошибка, строка 233 "at second color" -> if (secondStage[num2].color == 'brown') {
secondBrown.textContent -= 1;
return 'brown';
}
if (secondStage[num2].color == 'blue') {
return 'blue';
}
if (secondStage[num2].color == 'green') {
secondGreen.textContent -= 1;
return 'green';
}
}
ошибка, строка 245 "HTMLImageElement.<anonymous>" -> lastCard.innerHTML = `<img class = "last-card" src='../assets/MythicCards/${secondColor()}/${secondStage[num2].cardFace}'>`;
secondStage.splice(num2, 1);
}
if (secondStageText.classList.contains('done')) {
let randomNum3 = Math.floor(Math.random() * ((thirdStage.length - 1) - 0 + 1) ) + 0;
let num3 = randomNum3;
function thirdColor() {
if (thirdStage[num3].color == 'brown') {
thirdBrown.textContent -= 1;
return 'brown';
}
if (thirdStage[num3].color == 'blue') {
return 'blue';
}
if (thirdStage[num3].color == 'green') {
thirdGreen.textContent -= 1;
return 'green';
}
}
lastCard.innerHTML = `<img class = "last-card" src='../assets/MythicCards/${thirdColor()}/${thirdStage[num3].cardFace}'>`;
thirdStage.splice(num3, 1);
}
if (firstBrown.textContent == 0 && firstBlue.textContent == 0) {
firstStageText.classList.add('done');
}
if (firstStage.length == 0 && secondStage.length == 0) {
secondStageText.classList.add('done');
}
if (thirdStage.length == 0) {
thirdStageText.classList.add('done');
deck.classList.remove('active');
}
}
});
