2016-12-03 7 views
2

まず、私はJavaScriptを初めて使っています。私はイベントがjavascriptのキーを押すたびに繰り返されるようにしたいと思います。以下のサンプルコードを参照してください:このコードが実行されると、右矢印キーを押すとユーザーがjavascriptのキーを押すたびにイベントトリガーを持つ方法

<script> 
    document.addEventListener('keydown', function(event){ 
     if(event.keyCode == 39) { 
      document.write('Right was pressed'); 
     } 
    }) 
</script> 

、文は一度だけ印刷されます。私は、ユーザーがキーを押した回数だけ、イベントレジスタを複数回持っていたいと思います。助言がありますか?

+2

このため 'のdocument.writeを()'を使用しないでください。代わりに、ターゲットとする要素の内容を変更する必要があります。ページ全体であれば 'document.body'を使います。 'document.body.textContent + =" new content "' –

答えて

2

イベントは(あなたがキーを押したままならば、繰り返し)キーを押すたびに解雇されたが、それは何の変更のように見えるようdocument.write()たびにコンテンツを上書きします、あなただけ見て(代わりにinnerHTMLを使用することができます効果):

document.addEventListener('keydown', function(event){ 
 
    if(event.keyCode == 39) { 
 
    //Not recommended as 'T.J. Crowder' mentioned in the comment 
 
    document.body.innerHTML += 'Right was pressed <br>'; 
 
    } 
 
})

デバッグとイベントが呼び出されたことを確認するためにconsole.log()を使用することができます。

document.addEventListener('keydown', function(event){ 
 
    if(event.keyCode == 39) { 
 
    console.log('Right was pressed'); 
 
    } 
 
})

+1

* "でテキストを追加すると、コンテンツを上書きするたびに" *いいえ、ページの解析が完了した後初めてです。そして、 'document.close'を呼び出すまで文書に追加し続けます。しかし、 'document.write'はほぼ確実に問題になりました。あなたが上に示したように、何か他のことを行うことは解決策です(ただし、' innerHTML'では '+ ='を使用しないでください。何かをする)。 –

+0

&@squintが示唆したように、私が本文に書いたときにはうまくいきました。私もconsole.logと警告でコードをテストしていましたが、これらは一度しか表示されず、イベントが複数回登録されていないという印象を与えました。 – DannyMoshe

1

実はそれは確かに複数回トリガ。問題はdocument.writeがDOMをクリアすることです。

This exampleは私にとってはうまくいきます。

スクリプト:

var counter = 0; 
document.addEventListener('keydown', function(event){ 
    if(event.keyCode == 39){ 
    ++counter; 
    document.getElementById("demo").innerHTML = "Key downed " + counter; 
    } 
}); 

HTML:

<p id="demo"> 

</p> 
+1

これは既に公開されています(http://stackoverflow.com/a/40947897/157247)。既存の回答を複製する必要はありません。既存の回答を複製したことが分かったら、「削除」を使用して複製を削除します。 –

関連する問題