最近在复习到DOM事件,(内容若是有错误,欢迎指正)javascript
DOM0事件:常见的如onclick事件,DOM0事件每一个元素都有,包括window和document,这些事件一般所有是小写java
var btn=document.getElementById('btn'); //添加 btn.onclick=function(){ alert(this.id) //btn } //删除 btn.onclick=null;
DOM2事件只有两个方法:this
addEventListener(事件名,事件处理程序,布尔值)spa
removeEventListener(事件名,事件处理程序,布尔值)code
DOM2事件参数分析:事件
事件名:经常使用的事件名如clickip
事件处理程序:addEventListener和removeEventListener的事件处理程序一致时,remove才能正确的删除add注册的事件,能够看下面的例子rem
布尔值:true是捕获阶段执行事件处理程序,false是冒泡阶段执行事件处理程序(建议采用冒泡这样兼容性更好,若是在事件到达目标元素以前截获采用捕获)get
全部DOM节点都有这两个方法.io
/**指定相同的事件处理程序例子**/ /**错误写法:事件处理程序指定不一致,致使没法删除事件**/ var btn1=document.getElementById('btn1'); //这两个function是不一致的,虽然都是方法,但不是同一个 btn1.addEventListener('click',function(){ alert(this.id) },false); //这里事件删除不成功,由于function和事件注册的方法不是同一个 btn1.removeEventListener('click',function(){ alert(this.id) },false); /**正确写法**/ var handler=function(){ alert(this.id) } btn1.addEventListener('click',handler,false); //这里事件删除成功执行 btn1.removeEventListener('click',handler,false);
DOM0和DOM2的主要区别:
同一个元素绑定相同的DOM0级事件,后面的事件会覆盖先定义的事件;而同一个元素绑定相同的DOM2级事件,事件会按顺序执行;
DOM0级事件是默认冒泡执行的;DOM2级事件可指定是冒泡仍是捕获执行
var btn=document.getElementById('btn'); //这两个function顺序执行,首先打出id,以后打出hello btn.addEventListener('click',function(){ alert(this.id) },false); btn.addEventListener('click',function(){ alert('hello') },false); var btn1=document.getElementById('btn1'); //会覆盖,只执行hello btn1.onclick=function(){ alert(this.id) } btn1.onclick=function(){ alert('hello') }