element.addEventListener(type, listener, useCapture);
详解:
1)element 是要绑定函数的对象:document、window 或 XMLHttpRequest。
2)type 字符串,事件名称,要注意的是"onclick"要改为"click","onblur"要改为"blur",也就是说事件名不要带"on",比如“click”、“mouseover”、“keydown”等。
3)listener 实现了 EventListener 接口或者是 JavaScript 中的函数,即绑定的函数了,记住不要跟括号。
4)useCapture 布尔值,表示该事件的响应顺序,是否使用捕捉,看了后面的事件流一节后就明白了,一般用 false
userCapture若为true,则浏览器采用Capture,若为false则采用bubbing方式。建议用false,看个例子吧。
html代码
<div id="div_test"> <input type="button" id="btn_test" value="se4.cn技术基地" /> </div>
js代码
window.onload=function() { document.getElementById("div_test").addEventListener("click",test1,false); document.getElementById("btn_test").addEventListener("click",test2,false); } function test1(){ alert("外层div触发") } function test2(){ alert("内层input触发") }
如果userCapture是true则test1先触发,如果userCapture是false则test2先触发。
事件触发时,会将一个 Event 对象传递给事件处理程序,比如:
document.getElementById("testText").addEventListener("keydown", function (event) { alert(event.keyCode); }, false);
适应的浏览器版本不同,同时在使用的过程中要注意
attachEvent方法 按钮onclick IE中使用
addEventListener方法 按钮click fox中使用
两者使用的原理:可对执行的优先级不一样,下面实例讲解如下:
attachEvent方法,为某一事件附加其它的处理事件。(不支持Mozilla系列)
addEventListener方法 用于 Mozilla系列
举例: document.getElementById("btn").onclick = method1;
document.getElementById("btn").onclick = method2;
document.getElementById("btn").onclick = method3;如果这样写,那么将会只有medhot3被执行
写成这样:
var btn1Obj = document.getElementById("btn1"); //object.attachEvent(event,function);
btn1Obj.attachEvent("onclick",method1);
btn1Obj.attachEvent("onclick",method2);
btn1Obj.attachEvent("onclick",method3);执行顺序为method3->method2->method1
如果是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);执行顺序为method1->method2->method3
实例:(要注意的是div必须放到js前面才行)
<html> <head> </head> <body> <div id="name1" style="border:1px solid red;padding:10px 10px 10px 10px;"> <div id="name2" style="border:1px solid green;padding:10px 10px 10px 10px;">点击</div> </div> <div id="info"></div> <script> var name1=document.getElementById('name1'); //要注意 var name2=document.getElementById('name2'); //要注意 var info=document.getElementById('info'); if(name1.attachEvent){ //对于attachEvent前面的target我们一定要保证不为空 name1.attachEvent('onclick',function () { info.innerHTML += "红色" + "<br>"; }); name2.attachEvent('onclick',function () { info.innerHTML += "绿色" + "<br>"; }); }else{ name1.addEventListener('click',function () { info.innerHTML += "红色" + "<br>"; },false); name2.addEventListener('click',function () { info.innerHTML += "绿色" + "<br>"; },false); } </script> </body>