给一个对象绑定一个事件处理函数的第一种形式
obj.onclick = fn;
<!DOCTYPE html>
<html>
<head>
<meta charset="{CHARSET}">
<title></title>
<script type="text/javascript">
function fn1(){
alert(1);
}
function fn2(){
alert(2);
}
document.onclick = fn1;
document.onclick = fn2;//会覆盖前面绑定的fn1
</script>
</head>
<body>
</body>
</html>
给一个对象的同一个事件绑定多个不同的函数
给一个元素绑定事件函数的第二种形式
ie:obj.attachEvent(事件名称,事件函数); ie11不支持!!!!!
1.没有捕获
2.事件名称有on
3.事件函数执行的顺序:标准ie->正序 非标准ie->倒序
4.this指向window(见下面的用call解决)
标准:obj.addEventListener(事件名称,事件函数,是否捕获);
1.有捕获
2.事件名称没有on
3.事件函数执行的顺序:正序
4.this触发该事件的对象
是否捕获:默认false, false:冒泡 true:捕获
<!DOCTYPE html>
<html>
<head>
<meta charset="{CHARSET}">
<title></title>
<script type="text/javascript">
function fn1(){
alert(1);
}
function fn2(){
alert(2);
}
document.addEventListener('click',fn1,false);
document.addEventListener('click',fn2,false);
</script>
</head>
<body>
</body>
</html>
ie:obj.attachEvent(事件名称,事件函数); ie11不支持!!!!!
<!DOCTYPE html>
<html>
<head>
<meta charset="{CHARSET}">
<title></title>
<script type="text/javascript">
function fn1(){
alert(1);
}
function fn2(){
alert(2);
}
document.attachEvent('onclick',fn1);
document.attachEvent('onclick',fn2);
</script>
</head>
<body>
</body>
</html>
//call 函数下的一个方法,call方法第一个参数可以改变函数执行过程中的内部this的指向,call方法第二个参数开始就是原来函数的参数列表
<!DOCTYPE html>
<html>
<head>
<meta charset="{CHARSET}">
<title></title>
<script type="text/javascript">
function fn1(){
alert(this);
}
fn1.call();//调用函数 fn1() == fn1.call()
</script>
</head>
<body>
</body>
</html>
------------------------------------------------------------
<!DOCTYPE html>
<html>
<head>
<meta charset="{CHARSET}">
<title></title>
<script type="text/javascript">
function fn1(a,b){
alert(this);
alert(a+b);
}
fn1.call(1,10,20);
</script>
</head>
<body>
</body>
</html>
解决ie下指向window改为指向document
-----------------封装--------------------------------------------------------------------------
<!DOCTYPE html>
<html>
<head>
<meta charset="{CHARSET}">
<title></title>
<script type="text/javascript">
function fn1(){
alert(this);
}
function bind(obj,evname,fn){
if(obj.addEventListener){
obj.addEventListener(evname,fn,false);
}else{
obj.attachEvent('on'+evname,function(){
fn.call(obj);
});
}
}
bind(document,'click',fn1);
</script>
</head>
<body>
</body>
</html>