以前の js コードをより OOP スタイルに移行します。これがコードです。
function addEvent( obj, type, fn ) {
if ( obj.attachEvent ) {
obj['e'+type+fn] = fn;
obj[type+fn] = function(){obj['e'+type+fn]( window.event );}
obj.attachEvent( 'on'+type, obj[type+fn] );
} else
obj.addEventListener( type, fn, false );
}
function test() {
}
test.prototype = {
init: function () {
addEvent(document, 'mousedown', this.displaydown);
},
displaydown : function(e){
document.getElementById('mydiv').innerHTML = "down";
addEvent(document, 'mousemove', this.displaymove);
},
displaymove : function(e){
document.getElementById('mydiv').innerHTML = "move";
}
}
var test0 = new test();
test0.init()
mousedown の後に mousemove イベントを追加できませんでした
addEvent(document, 'mousemove', this.displaymove);
しかし、インラインスタイルを次のように書くと
addEvent(document, 'mousemove', function(e){
document.getElementById('mydiv').innerHTML = "move";
});
大丈夫です。2つのコードが同じことをしているように見えます。なぜ違いがあるのですか?ありがとう!
編集、
2 泊の闘争の後、私は最終的に問題を解決しました。ジョンビー、教えてくれてありがとう。
このキーワードでエラーが発生します。オブジェクトの場合、これはオブジェクト自体ではなくウィンドウを参照します。解決策は、最初にグローバル パラメータme (me = this)を定義することです。今は大丈夫です。