0
JavaScriptの構文に慣れています。私はkeypressesにアクションをバインドしようとしていますが、ここで私は見つけられないいくつかの切断があります。 switch
ケースが問題なく呼び出されるのはなぜですか?しかし、呼び出される関数は決して実行されません。javascript関数の呼び出しが機能しない
this.init = function() {
$(document).keydown(this.handleKeyPress);
}
this.handleKeyPress = function(event) {
switch (event.which) {
case 37:
alert("key press"); //this executes
this.turn("left");
break;
case 38:
this.turn("up");
break;
case 39:
this.turn("right");
break;
case 40:
this.turn("down");
break;
}
}
this.turn = function(direction) {
alert(direction); //this does not
}
私はこれが唯一の関連コードだと思いますが、参考になった場合はさらに投稿してください。ご協力いただきありがとうございます。
被災者ではなくイベントですか?あなたの範囲は何ですか?これはブロック内に包まれていますか? –
'handleKeyPress'関数のコンテキストがjQueryによってオーバーライドされています。これを防ぐには、あなた自身が明示的にコンテキストをバインドすることができます:switch文の 'console.log(this)'なら、 '$(document).keydown(this.handleKeyPress.bind(this))' – Hamms
'これはあなたが期待する文脈の中にありません。なぜあなたは 'これ 'を使っているのですか?これは別のオブジェクトの中にありますか?定義を 'var turn = function(direction){...}'に更新しない場合は、 'turn( 'left')'を使用してください。 – scrappedcola