当游戏结束时,javascript会停止所有功能

时间:2017-08-18 16:06:53

标签: javascript

我需要停止执行此功能:

document.addEventListener("keypress", function(evt) {

    evt = evt || window.event;
    var charCode = evt.keyCode || evt.which;
    var charStr = String.fromCharCode(charCode);

    checkKey(charStr);

    //check loss
    if (attempt == 0) {
        gameLost();
    }

    //check win
    underscoreRemain = nameReform.includes("_");
    if (!underscoreRemain) {
        gameWon();
    }

    document.getElementById("attempt").innerHTML = attempt;
});

基本上,当游戏赢或输时,它不会再按下任何键,因此不执行其余的功能。我查看了w3school和stackoverflow,但removeEnventListener和其他建议的方法不起作用。

1 个答案:

答案 0 :(得分:1)

通过在适当的时间将原始函数对象传递给removeEventListener来删除事件侦听器。

请注意,我为该函数命名。

document.addEventListener("keypress", function handler(evt) {

    // evt = evt || window.event; // This line is unnecessary

    var charCode = evt.keyCode || evt.which;
    var charStr = String.fromCharCode(charCode);

    checkKey(charStr);

    //check loss
    if (attempt == 0) {
        gameLost();

        // Remove the listener
        this.removeEventListener(event.type, handler);
    }

    //check win
    underscoreRemain = nameReform.includes("_");
    if (!underscoreRemain) {
        gameWon();

        // Remove the listener
        this.removeEventListener(event.type, handler);
    }

    document.getElementById("attempt").innerHTML = attempt;
});