DOM0级
分为两个
在标签内写onclick事件
1<input id="myButton" type="button" value="Press Me" onclick="alert('thanks');" >在JS写onlicke=function(){ }函数
123document.getElementById("myButton").onclick = function () {alert('thanks');}
DOM0级只能添加到冒泡阶段,相同对象的相同事件就覆盖了,如下面的代码最后只弹出B
DOM2级
只有一个:监听方法,有两个方法用来添加和移除事件处理程序:addEventListener()和removeEventListener()。
他们都有三个参数
- 第一个参数是事件名(如click)
- 第二个参数是事件处理程序函数
- 第三个参数如果是true则表示在捕获阶段调用,为false表示在冒泡阶段调用,默认为false
DOM2级的特点
addEventListener():可以为元素添加多个事件处理程序,触发时会按照添加顺序依次调用
只有2级DOM包含3个事件:事件捕获阶段、处于目标阶段和事件冒泡阶段
123<span><a></a></span>
点击a后capturing(捕捉)阶段事件传播会从document-> span->a
,然后发生在a,最后bubbling(冒泡)阶段事件传播会从a->span->document
。
最底层的元素就不再区分捕获阶段和事件冒泡阶段
事件不会覆盖,先写的先执行
DOM事件流
为什么没有DOM1级
DOM级别1于1998年10月1日成为W3C推荐标准。1级DOM标准中并没有定义事件相关的内容,所以没有所谓的1级DOM事件模型。在2级DOM中除了定义了一些DOM相关的操作之外还定义了一个事件模型 ,这个标准下的事件模型就是我们所说的2级DOM事件模型
最后以一道面试题加深对DOM0级和DOM2级的理解
题目:box1包含box2,box2包含box3,以下代码会依次弹出什么:
会依次弹出:E,F,G,H,I,B,C,D。不解释了