2
我創建了一個屏幕鍵盤在香草Javascript和我試圖改變屏幕上的鍵盤鍵的顏色,當相同的鍵被按下的物理鍵盤。到現在爲止還挺好。問題是,我正在使用keyup和keydown,但我似乎無法獲得正確的shift-combos。Javascript鍵盤,Shift +組合鍵
這是什麼將要發生:
- 當一個正常的鍵被按下它改變顏色爲藍色。
- 當按下shift鍵時,它將顏色變爲紅色。
- 當按下shift鍵+一個鍵時,它們都會變成紅色,並且當釋放鍵時它將恢復正常,但是如果shift鍵仍然處於按下狀態,它將會有紅色。
問題:當按下shift鍵+正常鍵時,即使按下shift鍵,如果我釋放正常鍵,兩個鍵上的顏色都會消失。
這是到目前爲止我的代碼:
farge1 = ' key-pressed';
farge2 = ' shift-pressed';
shift = false;
var klikk = function(e) {
e = e || window.event;
var k = e.keyCode || e.which;
if (k === 13) {
document.getElementById('enter').className += (farge1);
} else if (k === 8) {
document.getElementById('backspace').className += (farge1);
} else if (k === 16) {
document.getElementById('shift-right').className += (farge2);
document.getElementById('shift-left').className += (farge2);
shift = true;
}
};
var bokstav = function(e) {
e = e || window.event;
var b = String.fromCharCode(e.which).toLowerCase();
if (shift === true) {
document.getElementById(b).className += (farge2);
} else {
document.getElementById(b).className += (farge1);
}
};
var slipp = function(e) {
e = e || window.event;
var k = e.keyCode || e.which;
var b = String.fromCharCode(e.which).toLowerCase();
document.getElementById('enter').className = ("");
document.getElementById('backspace').className = ("");
document.getElementById(b).className = ("");
if (k !== 16) {
document.getElementById('shift-left').className = ("");
document.getElementById('shift-right').className = ("");
}
shift = false;
};
document.onkeypress = bokstav;
document.onkeydown = klikk;
document.onkeyup = slipp;
我在這個..沒有jQuery的PLS
Thx,但我認爲這是問題的關鍵,它是一個正常的鑰匙釋放的移位顏色消失..因爲我缺乏語法技巧,我無法將頭圍繞在邏輯上 –
@ HåvardBrynjulfsen這是因爲你正在檢查!== 16.你應該只改變移位顏色=== 16. – Bic
這工作,非常感謝! –