0

JavaScript でプログラムを作成しています。キーイベントを追加しようとしましたが、完了してオブジェクトを移動しようとしても移動しませんでした。オブジェクトを移動しようとしているときに、問題が何であるかを理解しようとしました (たとえば、x および y 座標系を使用して( y[1] += 5;))。したがって、キーコードが正しいことを確認しようとしました。を表示する関数を作成しましたkeyCode:

window.addEventListener( "keypress", doKeyDown, false );   
 
function doKeyDown(e) {
    alert( e.keyCode )
}

次に、任意のボタンを押してキーコードを表示しようとしましたが、上、下、右、左の矢印がない限り、すべてのボタンが「0」と表示されます。彼らはこのウェブサイトと同じ値を私に言っています: http://www.cambiaresearch.com/articles/15/javascript-char-codes-key-codesしかし、私が言ったように、例えば "W" "A" "S" 「D」はキーコードとして「0」を教えてくれるだけで、なぜかわかりません。

4

3 に答える 3

1

charCode文字の代わりに使用keyCodeします。

charCodeプロパティは、押された文字を で取得するために使用できる文字の ASCII を保持していますString.fromCharCode

キーコードと文字コードは異なるものであり、この違いを使用して、ユーザーが文字を入力したか、矢印を使用するときなどのアクションを実行したかを判断できます。

于 2013-04-26T16:35:31.587 に答える
0

window.addEventListener("keydown", doKeyDown, false);代わりに使用してください。リンクしたページにリストされているキーコードが報告されます。それ以外の場合、キーコードは異なります。

「keydown」イベントは、押されたキーのキー コードを報告し、大文字と小文字を区別しません。

  • 「e」= 69 および「E」= 69
  • '[Num Lock]' = 144
  • '[バックスペース]' = 8

「keypress」イベントは、印刷可能な文字 (キャリッジ リターンを含む) のキー押下のみを報告するように見え、キー コードも大文字と小文字が区別されます。

  • 'e' = 101 および 'E' = 69
  • 「[Num Lock]」には値がありません。
  • 「[バックスペース]」には値がありません。

両方のイベントによって報告された値を示すJS Fiddle の例を次に示します。

これはChromeでテストされました

于 2013-04-26T16:44:51.597 に答える
0

イベントリスナーで関数を使用する前に、関数を宣言する必要があります (一部のスタイルの意見では)。ただし、すべてのブラウザーはこれをホイストしますが、jslintを使用するとエラーが発生します。

「doKeyDown」は、定義される前に使用されました。

上記の情報を提供する多くの回答の1つを次に示します: JSLint: Using a function before it's defined error

これがjsfiddleの例です

<input id="input" type="text"></input>

console.log("W", "W".charCodeAt());

function logIt(evt) {
    console.log(String.fromCharCode(evt.charCode), evt.charCode);
}

var input = document.getElementById("input");

input.addEventListener("keypress", logIt, false);

また、次の回答を読むこともできます。さまざまなイベント タイプkeypessおよびkeydown、プロパティcharCodeおよびに関するものがありkeyCodeます。

JavaScript KeyCode と CharCode

于 2013-04-26T16:41:01.447 に答える