jquery函数调用不起作用

时间:2018-04-30 12:52:06

标签: javascript jquery function

代码。问题是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 :(得分:2)

play函数超出了范围,因此,它在keypress事件的上下文中不可用。使用this指的是执行函数的范围(全局范围)。

仅使用play(result)即可解决问题。

有关this的详细信息,您可以查看here