2014-10-08 88 views
0

在JavaScript中,我按住了兩個鍵,並且​​完美啓用。當我釋放其中一個密鑰時,會觸發keyup。到現在爲止還挺好。但我仍然拿着一把鑰匙,所以爲什麼打不出來?​​?我需要這個發生在我的比賽中。難道我做錯了什麼?這是預期的迴應嗎?有沒有解決辦法或什麼的?keydown事件沒有解僱,爲什麼?

window.addEventListener("keydown", 
function (e) { 
    console.log('down'); 
}, false); 

window.addEventListener('keyup', 
function (e) { 
    console.log('up'); 
}, false); 
+1

不知道我在下面,但爲什麼一鍵再次KEYDOWN大火,已經開了它,你還沒有發佈它呢? – kinakuta 2014-10-08 17:23:02

+1

Keydown在鑰匙掉下時反覆發作,但似乎如果他擊中另一個鑰匙然後進行鎖定,第一個鑰匙停止發射keydown。按鍵只發射一次 – juvian 2014-10-08 17:23:50

+0

Keydown反覆發射......?呵呵。這對我來說是新聞。 – Katana314 2014-10-08 17:26:01

回答

0

我看來像你試圖做這樣的事情:

var down = false; 
 
var up = false; 
 
document.body.addEventListener('keydown', function (e) { 
 
    if(e.which === 40) { 
 
     down = true; 
 
    } 
 
    
 
    if(e.which === 38) { 
 
     up = true; 
 
    } 
 
}); 
 

 
document.body.addEventListener('keyup', function (e) { 
 
    if(e.which === 40) { 
 
     down = false; 
 
    } 
 
    
 
    if(e.which === 38) { 
 
     up = false; 
 
    } 
 
    
 
    // logic here for one but not the other 
 
    if(down && !up) { 
 
     alert('down but not up!'); 
 
    } 
 
});