转自:http://blog.csdn.net/yyh1988923/article/details/6805002
举例:
document.getElementById(
"
btn
"
).onclick
=
method1;
document.getElementById(
"
btn
"
).onclick
=
method2;
document.getElementById(
"
btn
"
).onclick
=
method3;
写成这样:
var
btn1Obj
=
document.getElementById(
"
btn1
"
);
//
object.attachEvent(event,function);
btn1Obj.attachEvent(
"
onclick
"
,method1);
btn1Obj.attachEvent(
"
onclick
"
,method2);
btn1Obj.attachEvent(
"
onclick
"
,method3);
如果是Mozilla系列,并不支持该方法,需要用到addEventListener
var
btn1Obj
=
document.getElementById(
"
btn1
"
);
//
element.addEventListener(type,listener,useCapture);
btn1Obj.addEventListener(
"
click
"
,method1,
false
);
btn1Obj.addEventListener(
"
click
"
,method2,
false
);
btn1Obj.addEventListener(
"
click
"
,method3,
false
);
转自:http://www.cnblogs.com/rainman/archive/2009/02/11/1387955.html
在开始学期下面几种方法之前,应当讨论一下,一个好的addEvent()方法应当达到哪些要求:
a、支持同一元素的同一事件句柄可以绑定多个监听函数;
b、如果在同一元素的同一事件句柄上多次注册同一函数,那么第一次注册后的所有注册都被忽略;
c、函数体内的this指向的应当是正在处理事件的节点(如当前正在运行事件句柄的节点);
d、监听函数的执行顺序应当是按照绑定的顺序执行;
e、在函数体内不用使用 event = event || window.event; 来标准化Event对象;
一、John Resig 所写的 addEvent() 函数:http://ejohn.org/projects/flexible-javascript-events/
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 removeEvent( obj, type, fn ) {
if ( obj.detachEvent ) {
obj.detachEvent( ' on ' + type, obj[type + fn] );
obj[type + fn] = null ;
} else
obj.removeEventListener( type, fn, false );
}
这个函数如此简单易懂,的确非常令人惊讶。那么我们还是要看看上面的五点要求:
对于第一点满足了;
对于第三点和第五点,肯定也满足了;
对于第二点,并没有满足,因为addEventListener()会忽略重复注册,而attachEvent()则不会忽略;
但是第四点,并没有满足,因为Dom标准没有确定调用一个对象的时间处理函数的顺序,所以不应该想当然的认为它们以注册的顺序调用。
但是这个函数仍然是一个非常优秀的函数。
本文详细介绍了JavaScript中事件绑定的两种方式:直接绑定和使用addEvent()函数,并阐述了这两种方式的区别及各自的特点,包括执行顺序、重复绑定处理、事件处理函数内部的this指向等问题。


被折叠的 条评论
为什么被折叠?



