前提・実現したいこと
矢印キーを使用してdivを上下左右に動かす動作をjavascriptで実装したいと考えています。
発生している問題・エラーメッセージ
キーボードの取得はできているのですが、要素がまったく動かない状態です。
該当のソースコード
javascript,HTML,CSS
1ソースコード 2 3<script> 4 5 document.onkeydown = keydown ; // イベント検出 6 document.onkeyup = keyup ; // イベント検出 7 8 var x = 100 ; // 表示する座標 9 var y = 100 ; // 表示する座標 10 var pv = 10 ; // 1回の移動量 11 12// キーボードのフラグ (1 : 押されている / 0 : 離されている) 13 var left = 0 ; 14 var right = 0 ; 15 var down = 0 ; 16 var space = 0 ; 17 18 19/********** キーボードのイベント(押された) **********/ 20 21function keydown(event) // 押されたキーのフラグを 1 にする 22{ 23 if(event.which == 37) //left key 24 { 25 left = 1; 26 } 27 if(event.which == 38) //up key 28 { 29 up = 1; 30 } 31 if(event.which == 39) //right key 32 { 33 right = 1; 34 } 35 if(event.which == 40) //down key 36 { 37 down = 1; 38 } 39 40 move(); 41} 42 43function move() // キーボード入力を反映して表示座標を更新 44{ 45 if(left==1) { 46 x = x - pv; 47 } 48 if(right==1) { 49 x = x + pv; 50 } 51 if(up==1) { 52 y = y - pv; 53 } 54 if(down==1) { 55 y = y + pv; 56 } 57 58 document.getElementById("box").style.left = x; 59 document.getElementById("box").style.top = y; 60} 61 62/********** キーボードのイベント(離された) **********/ 63 64function keyup(event) // 離されたキーのフラグを 0 にする 65{ 66 if(event.which == 37) //left key 67 { 68 left = 0; 69 } 70 if(event.which == 38) //up key 71 { 72 up = 0; 73 } 74 if(event.which == 39) //right key 75 { 76 right = 0; 77 } 78 if(event.which == 40) //down key 79 { 80 down = 0; 81 } 82} 83 84</script> 85<body> 86<div class="box" id="box"></div> 87</body> 88 89 90//↓css 91.box{ 92 top:100px; 93 left:100px; 94 z-index: 1; 95 position: absolute; 96 background-color: red; 97 height:100px; 98 width:100px; 99} 100
試したこと
しっかりキーボードの取得が認識されてるか、矢印キーを押したらboxの色を変えるなどをして調べたところ認識はされているようでした
回答3件
あなたの回答
tips
プレビュー