我會把我以前的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()
我無法
addEvent(document, 'mousemove', this.displaymove);
鼠標按下後鼠標移動添加事件,但如果我寫內嵌樣式像
addEvent(document, 'mousemove', function(e){
document.getElementById('mydiv').innerHTML = "move";
});
這是確定的。它看起來2個代碼做同樣的事情。爲什麼有差別?謝謝!
編輯,
2晚鬥爭後,我終於解決了這個問題。感謝johnvey給你的啓發。
錯誤發生在這個關鍵字。在發生對象時,這是指窗口而不是對象本身。解決方案是我在開始時定義了全局參數me(me = this)。現在可以了。
嗨,johnvey 謝謝!我認爲我需要做第二種方法,但我無法綁定()。此步驟出現錯誤。我使用的是IE.6。這是原因嗎? – unigogo 2009-05-05 06:05:10