Игра JavaScript Hangman, проблема с прослушивателем событий ⇐ Javascript
-
Гость
Игра JavaScript Hangman, проблема с прослушивателем событий
Когда нажата кнопка, и она соответствует любой букве слова ответа, кнопка должна стать зеленой (и показать букву), в противном случае — красной.
Похоже, проблема связана с прослушивателем событий buttonGrid.addEventListener(...);
Функция checkLetter() работает только для первого вопроса/ответа, после первого вопроса/ответа при нажатии кнопки блок «if» и «else» запускается одновременно и помечает кнопку как неправильную. даже если это правильная кнопка, это создает ненужные неверные предположения и останавливает программу.
КОДОВАЯ РУЧКА: https://codepen.io/randomname031/pen/gOZvepQ
Вот функция:
function checkLetter(spanarray, spanletter) { пусть l = spanarray.length; buttonGrid.addEventListener("клик", (событие) => { попытки += 1; if (!event.target.classList.contains("not-this")) { если (spanletter.includes(event.target.textContent)) { // ПРАВИЛЬНЫЙ event.target.classList.add("правильно"); event.target.disabled = правда; spanarray.forEach((значение) => { if (value.textContent === event.target.textContent) { value.classList.remove("скрыть"); оценка += 10; л--; console.log(л); } }); если (л === 0) { setTimeout(() => { ОчиститьГрид(); печатьВопрос(); }, 500); } } еще { // НЕПРАВИЛЬНО event.target.classList.add("неверно"); event.target.disabled = правда; догадки--; неправильноGuess.textContent = догадки; оценка -= 10; если (предполагает === 0) { финал(); } } } }); } Я перепробовал все возможные способы, но не смог это исправить.
[*]Добавление и удаление прослушивателя событий [*]Перенос прослушивателя событий в другую функцию [*]stopPropagation() ~не знаю, правильно ли я его использовал [*]а еще спросил ChatGPT, и стало еще хуже.
Когда нажата кнопка, и она соответствует любой букве слова ответа, кнопка должна стать зеленой (и показать букву), в противном случае — красной.
Похоже, проблема связана с прослушивателем событий buttonGrid.addEventListener(...);
Функция checkLetter() работает только для первого вопроса/ответа, после первого вопроса/ответа при нажатии кнопки блок «if» и «else» запускается одновременно и помечает кнопку как неправильную. даже если это правильная кнопка, это создает ненужные неверные предположения и останавливает программу.
КОДОВАЯ РУЧКА: https://codepen.io/randomname031/pen/gOZvepQ
Вот функция:
function checkLetter(spanarray, spanletter) { пусть l = spanarray.length; buttonGrid.addEventListener("клик", (событие) => { попытки += 1; if (!event.target.classList.contains("not-this")) { если (spanletter.includes(event.target.textContent)) { // ПРАВИЛЬНЫЙ event.target.classList.add("правильно"); event.target.disabled = правда; spanarray.forEach((значение) => { if (value.textContent === event.target.textContent) { value.classList.remove("скрыть"); оценка += 10; л--; console.log(л); } }); если (л === 0) { setTimeout(() => { ОчиститьГрид(); печатьВопрос(); }, 500); } } еще { // НЕПРАВИЛЬНО event.target.classList.add("неверно"); event.target.disabled = правда; догадки--; неправильноGuess.textContent = догадки; оценка -= 10; если (предполагает === 0) { финал(); } } } }); } Я перепробовал все возможные способы, но не смог это исправить.
[*]Добавление и удаление прослушивателя событий [*]Перенос прослушивателя событий в другую функцию [*]stopPropagation() ~не знаю, правильно ли я его использовал [*]а еще спросил ChatGPT, и стало еще хуже.
Мобильная версия