Чтобы удалить прослушиватель событий, функция должна иметь имя для ссылки, чтобы вы могли ссылаться на прослушиватель событий, который нужно удалить. Например:
function myFunction() {
// code here
}
document.body.addEventListener("keydown", myFunction);
и для его удаления:
document.body.removeEventListener("keydown", myFunction);
Без назначения функций именам JavaScript не знает, какой прослушиватель событий удалить, поскольку вы можете связать несколько функцийк одному элементу.
Таким образом, чтобы изменить свой код, он должен быть:
document.body.addEventListener("keydown",function(e) {
if (e.keyCode == 49) {
document.body.addEventListener("keydown", verticalMoves);
} else if (e.keyCode == 50) {
document.body.addEventListener("keydown", horizontalMoves);
}
}
function verticalMoves(e) {
switch(e.keyCode) {
case 65: console.log("you pressed A"); break;
case 83: console.log("you pressed S"); break;
}
document.body.removeEventListener("keydown", verticalMoves);
}
function horizontalMoves(e) {
switch(e.keyCode) {
case 68: console.log("you pressed D"); break;
case 70: console.log("you pressed F"); break;
}
document.body.removeEventListener("keydown", horizontalMoves);
}