2011-05-23 134 views
4

我想在循環內添加一個條件,用於測試是否按下右箭頭,以及是否將div向右移動一點。但是我不知道如何檢查他們的keydown。如果在JavaScript循環中關閉了鍵盤,返回true?

我正在使用代碼來做它,但它確實很長,我確信有一個更短的方法來做到這一點。

這是代碼:

<div id="char"></div> 
    <script> 
    setInterval(function() { 

// here it should check if RIGHT (keycode 39) is down and move char 10px to the right if it is; 

    }, 20); 
    </script> 

我如何檢查循環內的keydown?順便說一句,我也在網站上使用jQuery。

感謝

+1

你使用任何像jQuery或只是原始JS庫? – 2011-05-23 21:22:39

+0

我正在使用jQuery。 – lisovaccaro 2011-05-23 21:32:16

+0

類似:http://stackoverflow.com/questions/2445613/how-can-i-check-if-key-is-pressed-during-click-event-with-jquery – spanky 2011-05-23 21:38:06

回答

2

使用jQuery and keydown

<div id="char"></div> 
<script> 
$(document).keydown(function(e){ 
    if(e.keyCode == 39){ 
      //do something 
     $("#char").animate({'left':'+=10'}, 1); 
    } 
}) 
</script> 

小提琴:http://jsfiddle.net/maniator/zXeXt/

+0

很酷,謝謝。短和工作 – lisovaccaro 2011-05-23 21:52:34

+0

@ Liso22,隨時:-) – Neal 2011-05-23 21:56:17

+0

爲什麼不只是做'$('body')'? – 2011-05-23 22:05:47

0

創建一個標誌var pressed;並將其設置爲true或按鍵事件虛假的;然後檢查它的循環

+2

這聽起來對我來說很合適。我不知道爲什麼這是downvoted。我給你一個upvote。 – Zach 2011-05-23 21:31:55

+1

你應該在'keydown'上將它設置爲'true'並且在'keyup'上設置爲'false'。 – lonesomeday 2011-05-23 21:35:13

+0

@Zach:是的,我也是。 – 2011-05-23 21:37:03

4

這裏亞去原JS你會做這樣的事情裏面(按預覽然後按住w):

http://jsbin.com/odalo3/edit

var isPressed = false; 

var keydown = function(e){ 
    if(e.keyCode == 87){ 
    isPressed = true; 
    } 
} 
var keyup = function(e){ 
    isPressed = false; 
} 

document.addEventListener("keydown",keydown,false); 
document.addEventListener("keyup",keyup,false); 

setInterval(function(){ 
    if(isPressed){ 
    document.getElementById('hello').innerHTML = document.getElementById('hello').innerHTML+', pressed'; 
    } 
},100) 

UPDATE

如果您正在使用jQuery,您可以將eventListeners更改爲:

$(window).keydown(function(e){ 
    if(e.keyCode == 87){ 
    isPressed = true; 
    } 
}) 
.keyup(function(e){ 
    isPressed = false; 
}) 

並刪除這些行:

var keydown = function(e){ 
    if(e.keyCode == 87){ 
    isPressed = true; 
    } 
} 
var keyup = function(e){ 
    isPressed = false; 
} 

document.addEventListener("keydown",keydown,false); 
document.addEventListener("keyup",keyup,false); 

但它是一樣的東西。