2015-11-20 1 views
-2

J'ai besoin d'aide pour trouver comment faire fonctionner la boucle correctement avec onKeydown. En ce moment, j'ai des problèmes où si vous appuyez sur la touche une fois, il sort 10 messages en une seule fois.Besoin d'aide pour faire fonctionner la boucle avec un événement onkeydown en javascript

var i = 0; 

do { 
    if (document.onkeydown = keyPress) { 
     i += 1; 
     console.log(i); 
    } 
} while (i < 5); 

function keyPress(m) { 

    if (m.keyCode == '38') { 
     i 
     document.write("you moved North" + "<br>"); 
     //up arrow 

    } else if (m.keyCode == '40') { 
     document.write("you moved South" + "<br>"); 
     //down arrow 
    } else if (m.keyCode == '37') { 
     document.write("you moved West" + "<br>"); 
     //left arrow 
    } else if (m.keyCode == '39') { 
     document.write("you moved East" + "<br>"); 
     //right arrow 
    } 
} 
+2

Pouvez-vous expliquer ce que vous avez l'intention de la première boucle 'faire ... while' est, parce qu'il fait sans doute pas ce que vous pensez qu'il fait. –

+1

Ce code n'a que peu de sens du début à la fin, et utiliser 'document.write' est une mauvaise idée, car il remplacera complètement le document actuel. Vous devriez aller chercher des tutoriels sur la façon dont la gestion des événements et la manipulation DOM sont faites de nos jours, et peut-être essayer une bibliothèque JS qui aide avec les choses tedius, comme la compatibilité du navigateur. – CBroe

+0

J'essayais de trouver un moyen de sortir la boucle pour imprimer le texte une fois par presse. –

Répondre

0

Vous ne savez pas si c'est votre problème, mais étant donné votre code, document.onkeydown sera toujours égal à keyPress. Commutateur:

if (document.onkeydown = keyPress) { 
    ... 
} 

Pour:

if (document.onkeydown == keyPress) { 
    ... 
} 
+0

Je pense que cela devrait vraiment faire un commentaire plutôt que de répondre. Vous répondez toujours n'aide pas beaucoup puisque keypress est une fonction pas une variable. – bhspencer