вызов функции jquery не работает - PullRequest
0 голосов
/ 30 апреля 2018

Это код. Проблема заключается в том, что this.play вызов для запуска функции play() всегда сообщает об ошибке. Я попробовал несколько разных вариантов, но ни один не работает.

[...]
event_listeners() {
  var result;
  $(document).on('keypress', function(evt) {
    if (evt.which == 49) {
      result = 1;
    } else if (evt.which == 50) {
      result = 2;
    } else if (evt.which == 51) {
      result = 3;
    } else if (evt.which == 52) {
      result = 4;
    } else if (evt.which == 53) {
      result = 5;
    } else if (evt.which == 54) {
      result = 6;
    } else if (evt.which == 55) {
      result = 7;
    }
    console.log(result);
    this.play(result);
  });
}

play(column) {
    console.log('play methode' + column);
    var movecount = 0;

    availableRow = this._model.checkAvailableRow(column);

    if (availableRow === -1) {
      $('.won').text("Fehler! Spalte voll!");
      return;
    }
    // Inkrementieren der Variablen, da checkAvailableRow() die Nummer der Zeile zurückgibt, hier aber der Arrayindex benötigt wird
    availableRow++;

    if (this.checkWin() == true) {
      $('.won').html((currentPlayer === "Player 1" ? "Player 1" : "Player 2") + " gewinnt!");
    }
    if (movecount === 41) {
      $('.won').html('Unentschieden!');
    }
    // Wechsel zum anderen Spieler
    this.switchTurn();
    movecount++;
  }
  [...]

При выполнении эта ошибка отображается в консоли.

View.js: 63 Uncaught TypeError: this.play не является функцией

Что я делаю не так, когда хочу запустить функцию play()?

1 Ответ

0 голосов
/ 30 апреля 2018
Функция

play находится вне области действия и по этой причине она недоступна в контексте события нажатия клавиши. Использование this означает область, в которой выполняется функция (глобальная область).

Использование только play(result) решит проблему.

Для получения дополнительной информации о this, вы можете посмотреть здесь

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