绑定事件
document.onclick=function () {
alert(1);
}
解除事件
document.onclick=null;
document.onclick=function () {
alert(2)
}
添加事件
addEventListener()
对象 . addEventListener(“click”,fun(){},false)
不兼容IE678;
事件名称不带on
第二个是事件函数
事件捕获。默认false
兼容IE678用attachEvent()
只接收俩参数
第一个是事件名称,是带on的事件名字
第二个是事件函数。
//添加事件的兼容写法
function addEvent(obj,eName,eFn) {
if(!-[1,]){ //判断是ie678
obj.attachEvent("on"+eName,function(){
eFn.call(obj);
}) //兼容IE678
}else{
obj.addEventListener(eName,eFn)//兼容标准浏览器
}
}*/
删除添加的事件
1.使用有名函数
fn1==null
2.如果一定要是匿名函数
转为字符串清除
//移除有名事件
function removeEvent(obj,eName,eFn) {
if(obj.attachEvent){ //判断支不支持attacgevent方法,如果支持就是ie678
obj.detachEvent("on"+eName,eFn) //兼容IE678
}else{
obj.removeEventListener(eName,eFn)//兼容标准浏览器
}
}
//移除匿名事件
添加事件时的this指向问题
addEventListener()
this指向box(添加事件的对象)
兼容IE678用attachEvent()
this指向window,obj
匿名函数加有名函数call来改变this的指向
bind(IE8不支持 )
box.addEventListener("click",function () {
alert(this)//div(box)
});
box.attachEvent("onclick",function () {
fn.call(box)
});
function fn(){
alert(this)
}