イベント オブジェクトとイベント オリジン オブジェクトを処理関数に渡す必要があります。外部JavaScriptの仕組みを理解していると思います:
<input id="input2"/>
<script>
function getKey2(e) { alert(this.id+e.keyCode); }
document.getElementById("input2").onkeypress = getKey2;
</script>
onkeypress メソッドは input2 DOM で定義されているため、これはそれを指し、イベント オブジェクトは関数の最初の引数として渡されます。しかし、私はインラインjavascriptと混同しています:
<input id="input1" onkeypress="getKey1(this,event)"/>
<script>
function getKey1(obj,e) {
alert(obj.id+e.keyCode);
}
</script>
最初の引数thisはWindowオブジェクトである必要がありますが、イベントでobjにコピーされると、DOM からのinput1であるイベント元オブジェクトになります。2 番目の引数eventはグローバル イベント オブジェクトである必要がありますが、呼び出されるとイベント オブジェクトが関数に渡されます。どうやら、私の推測は間違っているようです - 電話はどのように機能しますか?
簡単に言うと、次の文字のオブジェクト値が同じでないのはなぜですか?
| name object value
----------------------------------
in onkeypress | this Window
in getKey1 | obj DOM input1
| name object value
----------------------------------
in onkeypress | event global event
in getKey1 | e keypress event