我需要停止执行此功能:
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和其他建议的方法不起作用。
答案 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;
});