Ваши функции getArrowKey
и getWasdKey
принимают параметр e
, который вы явно намереваетесь быть объектом события для соответствующего события. И все же вы вызываете их без параметров:
onkeypress="getArrowKey(); getWasdKey();"
Когда вы вызываете функцию в Javascript и не можете передать все ее формальные параметры, предполагается, что вы не предоставите undefined
. Вот что здесь происходит с e
и вызывает вашу ошибку.
Поскольку использование атрибутов on*
, как правило, является плохой идеей, я бы порекомендовал решить эту проблему, добавив прослушиватели событий с использованием Javascript. Помимо других преимуществ, таких как разделение интересов между содержимым и логикой, функция, которую вы передаете addEventListener
, автоматически вызывается с объектом события в качестве его параметра при вызове.
Удалите это:
onkeypress="getArrowKey(); getWasdKey();"
из элемента body
и добавьте его в свой Javascript вместо этого:
document.body.addEventListener("keypress", function(e) {
getArrowKey(e);
getWasdKey(e);
});
Кроме того, как правильно заметил @connexo, ваша startIntervals
функция совершенно не нужна и, вероятно, вызовет ошибки - так что я бы просто удалил это.