ここでは、定義していない関数 ( forEach
)を呼び出しているため、機能していません。
while(forEach(evt) {
// ^
JavaScript コンソールを見ると、それに関連するエラーが表示されます。
evt
また、次のプロパティに割り当てたくありませんthis
。
this.evt = evt || event; // <== Don't do this
引数を使用するだけです:
evt = evt || event;
また、すべてのキー押下を個別に警告する場合、ループの理由はありません。
また、input
要素には終了タグがありません。次のようにする必要があります。
<input type="text">
または (XHTML、およびオプションで HTML):
<input type="text"/>
ではない:
<input type="text"></input>
which
最後に、キーコードに使用するブラウザもあれば、 keyCode
. ||
ブラウザが提供するものは何でも使用できます。
String.fromCharCode(evt.which || evt.keyCode)
最小限の更新は次のとおりです。ライブソース
<input type="text">
<script>
var a = document.getElementsByTagName('input')[0];
a.onkeypress = function(evt) {
evt = evt || event;
alert("You pressed " + String.fromCharCode(evt.which || evt.keyCode));
};
</script>