Gros problème en Javascript

Fermé
site12 Messages postés 288 Date d'inscription dimanche 13 février 2011 Statut Membre Dernière intervention 3 décembre 2017 - 22 août 2015 à 11:58
 Utilisateur anonyme - 22 août 2015 à 21:41
Bonjour
voici un bout de mon code en javascript

document.onkeydown = deplacer;
function deplacer(e) {
if (e.keyCode == 39) {
barreX += 4;
}
else if (e.keyCode == 37) {
barreX -= 4;
}
}
deplacer();


et ça me met: TypeError: undefined is not an object (evaluating 'e.keyCode')

donc le e.keyCode, il sait pas ce que c'est ? Mais je comprend pas, merci de bien vouloir me dire comment on fais pour que ça marche

merci d'avance

2 réponses

KX Messages postés 16733 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 31 janvier 2024 3 015
22 août 2015 à 12:11
Bonjour,

La fonction de document.onkeydown ne prends aucun paramètre, donc même si tu as une fonction avec un paramètre e, celui-ci vaudra undefined au moment de l'appel, or "undefined is not an object" il ne peut donc pas faire "e.keyCode" puisqu'en fait e ne vaut rien...

Plutôt qu'utiliser onkeydown sur document, tu devrais l'utiliser sur un input par exemple, dans ce cas la fonction onkeydown prendra bien le paramètre du type que tu attends...
0
Utilisateur anonyme
22 août 2015 à 21:41
Bonjour

Quand le gestionnaire d'événements appelle ta fonction, il lui passe bien un événement en paramètre et ton (e.keyCode == 37) est parfaitement correct.

Par contre, quand toi tu appelles directement deplacer(); dans ton code ci-dessus, tu ne lui passes aucun paramètre : dans ce cas là, e est bien "undefined".

D'ailleurs cet appel n'a pas grand sens : il est sensé gérer l'appui sur une touche, mais quelle touche quand tu appelles directement deplacer() ?
0