「こんにちは」は、keydownハンドラー内にないため、一度だけアラートを出します...ハンドラー内にありますready。
$(document).ready(function(){
$(document).bind('keydown',function(e){
key = e.keyCode;
if(key == 37){
left();
}else if(key == 38){
up();
}else if(key == 39){
right();
}else if(key == 40){
down();
}
});// keydown handler ends here
alert("Hi");
});
また、補足として、 のconsole代わりにメソッドを使用してみてくださいalert()。より説明的であり、非ブロッキングであるためです。
アップデート
以下のコメントから、コードで実際に何が起こっているのかについてかなり混乱していることがわかります... それでは、順を追って説明しましょう。
$(document).ready(function(){
ここでは、ハンドラーをDOM readyイベントにバインドしています。これは、ブラウザがドキュメント構造の構築を完了すると発生します。ロードする必要がある外部アセットは考慮されていません。
$(document).bind('keydown', function(e){
これで、ハンドラーをkeydownイベントにバインドしています。イベントがレベルに達すると、関数内のすべて(および関数内のみ) が実行されます。keydowndocument
key = e.keyCode;
keyCodeイベントのプロパティをkey変数に割り当てます。var範囲を維持するために、キーワードを前に付けることをお勧めします。var key = e.keyCode;
if(key == 37){
left();
}else if(key == 38){
up();
}else if(key == 39){
right();
}else if(key == 40){
down();
}
これで、一連のif/ブロックをジャンプして、以前に宣言された変数が条件の 1 つに一致する場合、 、、および関数elseを呼び出しています。leftuprightdownkey
});
これはハンドラーのENDです。keydown
alert("Hi");
alert()ではメッセージです。これは、keydownハンドラーが BOUND された直後に行われますが、そのハンドラーの実行後ではありません。この行は、ドキュメントreadyハンドラーの一部として 1 回実行されます。
});
これでドキュメントreadyハンドラは終了です。