Переключение с одной функции прослушивателя на другую - PullRequest
0 голосов
/ 10 июня 2018

У меня проблемы с доступом к функции прослушивания второго события после вызова первой.Я относительно новичок в javascript, поэтому это может быть просто структура того, как я вызываю свои функции.

Вот мой код для моего метода 'fire', на который ссылаются в вызовах слушателя событий:

//Make sure you are not clicking on the row/col labels
    if (row > 0 && col > 0) {
        if (gameBoard[row][col] == 0) { //Check for a miss
            e.target.style.backgroundColor = 'white';
            //Set the value in the matrix to a 3 to indicate a miss
            console.log(e.target.id);
            gameBoard[row][col] = 3;
            turnCt++;
            return;
        }else if{
        //More conditionals for my other cases
        }
    }

Вот как это выглядит, когда я вызываю свои функции:

if (turnCt % 2 == 1) {
    drawTopGameboard("Two");
    drawBottomGameboard("One", gameBoardOne);

    topContainer.addEventListener("click", function (e) {
        fire(e, gameBoardTwo, "Two")
    }, false);
    console.log("First conditional");
} else {
    drawTopGameboard("One");
    drawBottomGameboard("Two", gameBoardTwo);

    topContainer.addEventListener("click", function (e) {
        fire(e, gameBoardOne, "One")
    }, false);
    console.log("Second conditional");
}

В конечном итоге я пытаюсь переключать доски, на которых нажимают после нажатия на один квадрат (точно так же, кактипичная игра линкор).Моя проблема заключается во втором фрагменте кода, потому что независимо от того, сколько ходов выполнено, я никогда не выводю «Второе условие» на консоль.Это заставляет меня поверить, что я никогда не покидаю функцию первого прослушивателя событий.

Любая помощь будет потрясающей !!

1 Ответ

0 голосов
/ 10 июня 2018

Это заказ.Вы назначаете одного или другого прослушивателя событий при загрузке страницы из-за if else.Вместо этого назначьте прослушиватель событий один раз и проверьте условие в обработчике.

topContainer.addEventListener('click' function(e) {
    if (turnCt % 2 === 1) {
        fire(e, gameBoardTwo, "Two");
    } else {
        fire(e, gameBoardOne, "One");
    }
}, false);

Теперь turnCt будет оцениваться всегда после нажатия.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...