Hello All ^^ Я прошу прощения, если это было задано ранее (хотя я не смог найти ранее опубликованный, похожий вопрос сам ...). Кроме того, позвольте мне заранее извиниться за простоту этого вопроса.
Это простая браузерная игра, похожая на колесо фортуны. Случайная цитата генерируется с помощью скрипта js, который должен угадать пользователь с помощью клавиш на экране. Тем не менее, я не могу сравнить пользовательский клик с кликом в текстовом контенте цитаты; он возвращает "undefined".
Я понимаю (после прочтения некоторых вопросов здесь), что причина, по которой document.querySelectorAll ('. letters') возвращает "undefined", заключается в том, что это массив, и, скорее всего, требует forEach l oop, а не для l oop.
Однако есть ли способ увеличить это значение для l oop, чтобы сравнить целевое значение события нажатия кнопки со значением массива document.querySelectorAll ('. Letters')? Если нет, как бы я записал это как a для каждого l oop? Я пытался переписать его как таковой в течение последнего часа или около того, но мне не повезло: /
Не возможно ли включить это в функцию с прослушивателем событий?
Я делаю цените ваше время.
ссылка на репо на github (https://github.com/shonb6570/Tech-Degree-Project-6/settings).
код задачи:
qwerty.addEventListener('click', function (event) {
if ( event.target.tagName === "BUTTON" ) {
event.target.className = "chosen";
for( let i = 0; i < letters.length; i++ ) {
if( event.target.innerText === letters.textContent.toLowerCase() ) {
letters.className = 'show';
matched += 1;
}
}
}
});
полный код:
//Keyboard and game element variables
const qwerty = document.getElementById('qwerty');
const phrase = document.getElementById('phrase');
const keyLetters = document.querySelectorAll('.keyrow button').innerText;
//hidden letters of phrase
const letters = document.querySelectorAll('.letters');
//Game score
const missed = 0;
const matched = 0;
//Start button (hides start screen overlay and begins game)
const startGame = document.querySelector('.btn_reset');
startGame.addEventListener('click', function () {
document.querySelector('.start').style.display = 'none';
});
//Game quotes
const quotes = [
["René Descartes" , "I think therefore I am"],
["Friedrich Nietzsche" , "What does not kill me makes me stronger"],
["Socrates" , "The unexamined life is not worth living"],
["Sir Winston Churchill" , "If you are going through hell keep going"],
["Winnie the Pooh" , "Doing nothing often leads to the very best of something"],
["Aldous Huxley" , "Never have so many been manipulated so much by so few"],
["Albert Einstein" , "The most beautiful experience we can have is the mysterious"]
];
//Generate random quote
const getRandomPhraseAsArray = () => {
//create random number between 1 - 7 for quote selection
let randNum = Math.floor( Math.random() * (quotes.length) );
//retrieve object value (quote) with random number
let randQuote = quotes[randNum][1];
//select the ul .phrase div
const ul = document.querySelector('#phrase ul');
//Append to li element created in const li
randQuote = randQuote.toString().split("");
//iterate though each string value in randQuote, create an li element
//then set the innerText of the li to the string value
for( let i = 0; i < randQuote.length; i++ ) {
const li = document.createElement("li");
ul.appendChild(li);
li.innerText = randQuote[i];
if ( randQuote[i] != " " ) {
li.className = "letter";
} else {
li.className = "space";
}
};
};
getRandomPhraseAsArray();
//keypress function
qwerty.addEventListener('click', function (event) {
if ( event.target.tagName === "BUTTON" ) {
event.target.className = "chosen";
for( let i = 0; i < letters.length; i++ ) {
if( event.target.innerText === letters.textContent.toLowerCase() ) {
letters.className = 'show';
matched += 1;
}
}
}
});