Q1: DOM0 事件和DOM2级在事件监听使用方式上有什么区别?
Dom0级
Dom0级事件处理程序是将一个函数赋值给一个事件处理程序属性,而通过将事件处理程序设置为null删除绑定在元素上的事件处理程序。这种方法无法给一个事件添加多个事件处理程序,后面的程序会覆盖前面的程序。
Dom2级
而Dom2级定义了addEventListener()和removeEventListener()用于处理指定和删除事件处理程序。所有Dom节点都包含这两个方法,并且它们都接受3个参数,要处理的事件名、作为事件处理程序的函数和一个布尔值。最后这个布尔值参数如果是true,表示在捕获阶段调用事件处理程序;如果是false,表示在冒泡阶段调用事件处理程序。
但是通过removeEventListener()函数来移除事件处理程序时,移除时的参数必须与添加处理程序时使用的参数相同,这也意味着通过addEventListener()添加的匿名函数将无法移除。如:
二者区别:
使用Dom2级方法添加事件处理程序的主要好处是可以添加多个事件处理程序,而Dom0级为一个事件添加多个事件处理程序时,后面的程序会覆盖前面的。
Q2: attachEvent与addEventListener的区别?
Q3: 解释IE事件冒泡和DOM2事件传播机制?
- 其中冒泡和捕获阶段区别在于事件被触发后传播的先后顺序。
- 若单击了页面中的a链接,那么那么处于用户鼠标下的div p a将全部响应单击事件。
- 在事件捕获的过程中,最外层的元素首先响应,接着再传递给更具体的元素。即div>p>a
- 在事件冒泡的过程中,则最具体的元素首先响应,响应之后,事件会向上冒泡至更一般的元素。a>p>div
Q4:如何阻止事件冒泡? 如何阻止默认事件?
chrome等浏览器:stopPropagation()阻止事件冒泡,preventDefault()阻止默认事件
IE:cancelBubble=true阻止事件冒泡,returnValue=false阻止默认事件
Q5:有如下代码,要求当点击每一个元素li时控制台展示该元素的文本内容。不考虑兼容
- 这里是
- 饥人谷
- 前端6班
Q6: 补全代码,要求:
- 这里是
- 饥人谷
- 前端6班
Q7: 补全代码,要求:当鼠标放置在li元素上,会在img-preview里展示当前li元素的data-img对应的图片。
- 鼠标放置查看图片1
- 鼠标放置查看图片2
- 鼠标放置查看图片3