有接触过设计模式一书中的addEvent的吗,为什么this.id在ie上显示不出元素id啊
有接触过设计模式一书中的addEvent的吗,为什么this.id在ie下显示不出元素id啊?
代码如下:
------解决方案--------------------
改一下吧。
这里的this本来是指向window,原理不太明白。。
代码如下:
<div id="div1" style="background:yellow; height:100px; width:100px"></div>
var box=document.getElementById('div1');
function addEvent(el,type,fn){
if(window.addEventListener) {
el.addEventListener(type,fn,false);
}
else if(window.attachEvent) {
el.attachEvent('on'+type,fn);
}
else{
el['on'+type]=fn;
}
}
addEvent(box,'click',f1);
addEvent(box,'click',f2);
function f1(){
alert('here')
alert(this.id)
alert(this)
}
function f2(){
alert('there')
alert(this.id)
alert(this)
}
------解决方案--------------------
改一下吧。
function addEvent(el,type,fn){
if(window.addEventListener) {
el.addEventListener(type,fn,false);
}
else if(window.attachEvent) {
el.attachEvent('on'+type,function(){
fn.call(el);
});
}
else{
el['on'+type]=fn;
}
}
这里的this本来是指向window,原理不太明白。。