2017-05-29 11 views
0

私は、可能であれば特殊文字を含むすべてを含む必要のあるプログラミングタイピングゲームを作っています。私は\(キーコード220)キーで何らかの問題を抱えています。文字列にそのボタンを押してから、出力に表示します。文字列を分割して出力するのではなく、毎回分割します。これを防ぐ方法はありますか?ここに私のコードは次のとおりです。キーが押されたときに文字列にを追加する

var out = document.getElementById("output"); 
 
var string = ""; 
 
var shift = false 
 

 
document.onkeydown = function(e){ 
 
    //detect when the "shift" key is held 
 
    if(e.keyCode == 16) shift = true; 
 
    //just to show that this does work 
 
    if(e.keyCode == 65){ 
 
    if(shift){ 
 
     string += "A"; 
 
    }else{ 
 
     string += "a"; 
 
    } 
 
    } 
 
    //pressing the/key 
 
    if(e.keyCode == 220){ 
 
    if(shift){ 
 
     string += "|"; 
 
    }else{ 
 
     string += "\"; 
 
    } 
 
    } 
 
    print(); 
 
}; 
 

 
document.onkeyup = function(e){ 
 
    if(e.keyCode == 16) shift = false; 
 
}; 
 
function print(){ 
 
    out.innerHTML = string; 
 
}
<!DOCTYPE html> 
 
<html> 
 
<body> 
 
<p id="output">press the \ or a key</p> 
 
</body> 
 
</html>

EDIT:私のミス私はキーコード玉葉\キーを置くことを意味は、私は自分のコードの間違った部分をオフに探していた220でした。私はドイツ語のキーボードレイアウトを持っているので、私はそれをテストcan't

+0

は、構文ありますあなたのコードでは、 'string + =" \ ";'は '\'文字を含む文字列を表しません。 '\'は実際に閉じ引用符をエスケープします。 – Aaron

+0

@Aaron文字を文字列に出力しようとしています(これは、すべての文字などが表示される前のものです)。私は\ keyを出力したいが、構文エラー_is_は問題である。私は(私の場合)\文字を出力して構文エラーを修正する方法があれば疑問に思っていました。それがあれば、それは素晴らしいだろう! –

+0

Frank Wisniewskiの答えに示唆されるように、エスケープ文字をエスケープします。文字を '\'で始めると、その特殊な意味が取り除かれ、代わりにリテラル文字として使われます: '' \ "' 2番目の引用符はあなたの文字列を閉じていません。文字列の中の単なる引用文字です。しかし、 '' \\ ''ではエスケープされた' \ 'になりますので、閉じ引用符をエスケープしませんが、それ自体は文字\'文字として理解されます。 – Aaron

答えて

2

...

string += "\\";

iもit's e.shiftKeyをチェックする方法だと思う。..

+0

コードが動作します!ありがとうございました! –

関連する問題