Мой addEventListener не связан с моей функцией ... любая помощь приветствуется - PullRequest
1 голос
/ 04 мая 2019

Создание игры палач.Мой addEventListener не связывается с моей функцией.Счетчик неправильных ответов все еще увеличивается, поэтому там немного жизни ...

У меня были поле ввода и кнопка, и она работала.Но чтобы улучшить внешний вид, я добавил кнопку для каждой буквы и попробовал onClick, addeventListener, но не могу заставить его работать.

function createLetterKeys(id, text, value) {
    var letterKey = document.createElement("div");
    letterKey.setAttribute("id", id);
    letterKey.innerHTML = text;
    letterKey.setAttribute("class", "keys");
    letterKey.addEventListener("click", playGame);
    lettersDiv.appendChild(letterKey);
}

createLetterKeys("a", "a", "a");

function playGame() {
    var guess = document.querySelectorAll("keys").value;
    var wrong = true;
    if (guessList.includes(guess)) {
        alert("You've already used that letter. Try again...");
    }
    if (guess == letter1) {
        document.getElementById("let1").innerHTML = guess;
        guessedRight.push(letter1);
        counter--;
        wrong = false;
        guessList.push(guess);
    }
    if (guess == letter1) {
        document.getElementById("let1").innerHTML = guess;
        guessedRight.push(letter1);
        counter--;
        wrong = false;
        guessList.push(guess);
    }

Выше приведен пример кода (повторяется в моем коде),Переменная GUESS, похоже, не получает никакой информации ...

Ответы [ 2 ]

0 голосов
/ 04 мая 2019

document.querySelectorAll возвращает NodeList, содержащий все элементы, соответствующие вашему селектору.Но на самом деле это все ваши письма, а не только нажатые (угаданные) буквы.Более того, NodeList не имеет свойства value.Вот почему вы ничего не получаете в переменной "предположить".

Если я прав, вы на самом деле хотите вместо этого щелкнуть буквенный элемент.Используйте this.id в функции playGame (), чтобы получить идентификатор выбранного элемента.Поскольку идентификатор вашего элемента - это буква, вы можете легко получить предполагаемое письмо:

var guess = this.id;

Позже отредактируйте: я добавил для этого рабочий JSFiddle на https://jsfiddle.net/o57nd0L1/3/

0 голосов
/ 04 мая 2019

Полагаю, вы просто забыли добавить точку к вашему .keys (используйте точки для выбора элементов по имени класса).

var guess = document.querySelectorAll(".keys").value;

...