2017-08-04 4 views
0

J'ai un problème liant un événement à une instruction if else. J'ai été en mesure d'obtenir un événement onkeypress qui a changé le contenu html mais j'ai des problèmes pour obtenir le contenu de quelle touche a été pressé après l'événement pour exécuter du code s'ils ont appuyé sur une certaine touche. Si vous pouviez m'aider à comprendre pourquoi mon code ne fonctionne pas, ce serait génial. Je ne reçois aucune erreur de syntaxe. Je le veux à console.log quand j'appuie sur la touche "h".lier un événement onkeypress avec une instruction if else?

HTML

<p>Guess what letter I'm thinking of!</p> 
    <br/ > 
    <div>Wins: </div> 
    <br/ > 
    <p id="losses">Losses: </p> 
    <br/ > 
    <p>Guesses Left: </p> 
    <br/ > 
    <p>Your Guesses so far: <span id="change"></span></p> 
    <br/ > 

Javascript

window.onload = function() { 

var guess = document.body.onkeypress = function(event){ 
document.getElementById("change").innerHTML = String.fromCharCode(event.keyCode); 
} 

    function test(){ 
    var letter = document.getElementById('change'); 

    if(letter.innerHTML==="h"){ 
     console.log('hi'); 
    } else { 
     console.log("nothing"); 
    } 
} 
} 

+0

lorsque le test est exécuté? –

+0

@JesusCarrasco J'essaie de faire en sorte que lorsque vous appuyez sur h, il fait un console.log(); Il modifie déjà le contenu du code HTML pour la clé que vous appuyez. Désolé je suis encore nouveau à java –

+0

essayer ma réponse, et laissez-moi savoir si l'aide. faites-vous javascript. ? lol –

Répondre

0

Ce travail pour moi, je ne l'ai pas trouvé dans votre code l'invocation de la fonction de test, donc j'enveloppé dans le onkeypress

var guess = document.body.onkeypress = function(event){ 
     console.log(event); 
     document.getElementById("change").innerHTML = 
     String.fromCharCode(event.keyCode); 
     var letter = document.getElementById('change'); 
     if(letter.innerHTML==="h"){ 
      console.log('hi'); 
     } else { 
      console.log("nothing"); 
     } 

    }; 
+0

Oh mon! Je vous remercie! Travaillait sur cela pendant plusieurs heures et je ne pouvais pas comprendre! –

0

<input> éléments n'a pas de contenu HTML, donc innerHTML renvoie toujours une chaîne vide.

Vous pouvez obtenir la valeur de la zone de texte (pas seulement le caractère, le cas échéant, que l'utilisateur a appuyé) avec .value.

+0

Je l'ai changé en valeur et cela n'a pas fonctionné. Ce n'est pas non plus une boîte de texte. Je l'ai mis en place afin qu'il change le texte dans la div. –

+0

Je veux dire la zone de saisie –