• ベストアンサー

うまく動作しないのはなぜ?

shift、→、↓の3つのキーにのうち、1つだけ押すとブラウザに「1」を表示、2つ押すと「2」を表示、3つとも押すと「3」を表示する、という動作のjava scriptを書きました。(初心者です) ところが3つ押した場合なぜか動作してくれません。「→」ではなく「←」キーで行った場合はちゃんと「3」が表示されるのですが…。 原因がわからず困ってます。どなたかお助け下さい。 こちらの環境はwindowsXPでIE(バージョン6)です。 ソースも載せておきます。 <html> <head> <script type="text/javascript"> document.onkeydown = keydown; document.onkeyup = keyup; var shift=0, right=0, back=0; function keydown(){ switch(event.keyCode){ case 32: shift=1; break; case 39: right=1; break; case 40: back=1; break; } } function keyup(){ switch(event.keyCode){ case 32: shift=0; break; case 39: right=0; break; case 40: back=0; break; } } function timer(){ window.setTimeout("timer();", 20); document.getElementById("shift+right+back").innerHTML = shift + right + back; } </script> </head> <body> <script> timer(); </script> shift+right+back=<p id="shift+right+back"></p> </body> </html>

質問者が選んだベストアンサー

  • ベストアンサー
回答No.2

ソースコードが正しいとすると、キーボード自体が3つボタンの同時押しに対応していないのかもしれません。 これはキーボードの構造上の問題となるので、もしコレが原因であるのならば、別の対応しているキーボードで試すしかないです。 私のキーボードは3つボタン同時押しができないので、 シューティングゲームをやっていて、「攻撃ボタンを押しながら、斜め移動」というのができなくて困った経験があります^^; 以下に、その問題を説明してあるページのURLを載せておきますね。 http://itpro.nikkeibp.co.jp/members/NBY/techsquare/20040701/3/?ST=ittrend http://www.donburi.to/~from/dtxmania/qa/threekeys.html

kk-ponpon
質問者

お礼

他のキーボードでやってみたら動作しました。 ただ、今まで使ってたキーボードでも「space、←、↓」の3つ同時押しならちゃんと動いていたんです。それが「space、→、↓」だと動作しないので変だなと思っていたんですが、そういう仕様だったのかもしれません。 ありがとうございました。

その他の回答 (1)

  • You_are
  • ベストアンサー率20% (23/114)
回答No.1

基本的な動きは大丈夫だと思います。 問題なのは、case文でキーを押した時に分岐していますが、その値が妥当かどうかでは無いでしょうか? 参考URLの様に、alertで押したキーの値を見る方法も有りますし、 下のサイトを見て見るのも良いかも知れません。 http://d.hatena.ne.jp/teramako/20070215/firefox_event_keyCode_and_charCode

参考URL:
http://developer.mozilla.org/en/docs/DOM:event.keyCode
kk-ponpon
質問者

補足

すみません、質問を間違えてました。 shiftキーではなくspaceキーです。 space、→、↓の3つのキーのうち、3つ押したときの動作が上手くいかなかったんです。 ちなみにキーの値は正しいと思うのですが…