DOM0级分为两个:
一是写在标签内的onclick事件;
<button id="btn" onclick="alert('happy')">按钮</button>
二是在JS写的onclick = function() {}函数
document.getElementById("btn").onclick = function() { alert('thanks') };

DOM2级只有一个:
监听方法,原生方法addEventListener()用于添加事件处理程序(可以添加多个事件处理程序,触发时按照添加顺序依次调用);
removeEventListener()用于移除事件处理程序。
document.getElementById("btn").addEventListener("click", function(){alert("come on")} , false);
两个方法都有三个参数:
event:表示事件名,如click;
function: 事件处理程序函数;
useCapture: true表示捕获阶段调用,false表示在冒泡阶段调用。

DOM2级包含3个事件:事件捕获阶段、处于目标阶段、事件冒泡阶段
<div><a></a></div>,点击a
捕获阶段传播: document ——> div ——> a,然后发生在a。
冒泡阶段传播: a ——> div ——> document

区别:
如果定义两个DOM0级事件,会出现覆盖,DOM2不覆盖,会依次执行。DOM0和DOM2可以共存,不互覆盖。
<a href="#" id="hash" onclick="fn();fn1()">
<button>返回上面进行开通</button>
</a> <!-- 以下四个script的结果是分开执行所得 --> <!-- 内嵌DOM0:把onclick写在标签内,都是DOM0级事件,fn和fn1依次执行。 -->
<script>
var btn = $("#hash").get(0);
function fn() {
console.log('ade');
}
function fn1() {
console.log('ade111');
}
// ade
// ade111
</script> <!--绑定onclick事件作为DOM0级,会覆盖行内onclick,也会覆盖前面的绑定事件-->
<script>
var btn = $("#hash").get(0); btn.onclick = function () {
console.log("111");
}
btn.onclick = function () {
console.log("222");
}
function fn() {
console.log('ade');
}
function fn1() {
console.log('ade111');
}
// 222
</script> <!--DOM2-->
<script>
var btn = $("#hash").get(0);
$("#hash").click(function() {
console.log("JQ的DOM2级点击第一次");
}); $("#hash").click(function() {
console.log("JQ的DOM2级点击第二次");
}); btn.addEventListener("click", function () {
console.log("原生DOM2级点击第一次");
}, false); btn.addEventListener("click", function () {
console.log("原生DOM2级点击第二次");
}, false); // JQ的DOM2级点击第一次
// JQ的DOM2级点击第二次
// 原生DOM2级点击第一次
// 原生DOM2级点击第二次
</script> <!--DOM0和DOM2-->
<script>
// 作为DOM0级被调用
function fn() {
console.log('ade');
} // 作为DOM0级被调用
function fn1() {
console.log('ade111');
} // 作为DOM0级
var btn = $("#hash").get(0);
btn.onclick = function() {
console.log('111');
} // DOM0
$('#hash').click(function() {
console.log('JQ的DOM2级点击第一次');
}); // DOM2
btn.addEventListener('click', function () {
console.log('原生DOM2级第一次click')
}, false); // 111 (fn()、fn1()被覆盖)
// jq的DOM2级点击第一次
// 原生DOM2级第一次click
</script>

 

DOM0级同DOM2级的更多相关文章

  1. DOM0级与DOM2级

    定义: 0级DOM 分为2个:一是在标签内写onclick事件  二是在JS写onlicke=function(){}函数 1) <input id="myButton" t ...

  2. javaScript——DOM1级,DOM2级,DOM3级

    DOM0,DOM2,DOM3事件处理方式区别:http://www.qdfuns.com/notes/11861/e21736a0b15bceca0dc7f76d77c2fb5a.html JS中do ...

  3. js DOM0级事件和DOM2级事件

    注册事件有两种方式,分别是DOM0级和DOM2级 DOM0级就是通过事件绑定的形式dom元素只能有(绑定)一个事件处理函数,他的特点是同一个元素绑定相同事件, 后面函数会覆盖前面的 绑定: dom.o ...

  4. dom0级事件和dom2级事件

    dom0级事件 <a href="#" id="hash" onclick="fn();fn1();"> <button ...

  5. 测试DOM0级事件和DOM2级事件的堆叠

    1. 问题 如果大家看过北风网CJ讲师的Javascript视频教程,就可以看到其封装了一个很强的事件添加和删除函数,如下所示 function addEvent(obj, evtype, fn) { ...

  6. DOM0级事件处理、DOM2级事件处理

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  7. 【20190226】JavaScript-知识点记录:dom0级事件,dom2级事件

    DOM0级事件处理程序: 通过将元素的事件处理程序属性(如onclick)的值设置为一个函数来指定事件处理程序的方法称为DOM0级方法,它被认为是元素的方法,这时候的事件处理程序是在元素的作用域中运行 ...

  8. DOM0、DOM2级事件

    JavaScript DOM0.DOM2级事件 1.DOM0级事件:on+事件类型 在html行内直接绑定,也就是通过行内js绑定的例如<span onclick="alert('1' ...

  9. 关于DOM事件流、DOM0级事件与DOM2级事件

    一.DOM 事件模型 DOM 事件模型包括捕获和冒泡,捕获是从上往下到达目标元素,冒泡是从当前元素,也就是目标元素往上到 window 二.流 流的概念,在现今的 JavaScript 中随处可见.比 ...

随机推荐

  1. 五、关于mycat踩过的坑

    1.ER分表的从表无法批量插入,例如:insert into tab_a(c1,c2) values(v1,v2),(v11,v21)或者使用jdbctemplate进行batchUpdate操作会报 ...

  2. 有哪些不同类型的 IOC(依赖注入)方式?

    构造器依赖注入:构造器依赖注入通过容器触发一个类的构造器来实现 的,该类有一系列参数,每个参数代表一个对其他类的依赖.Setter 方法注入:Setter 方法注入是容器通过调用无参构造器或无参 st ...

  3. Atomic 的实现原理

    1.直接操作内存,使用Unsafe 这个类 2.使用 getIntVolatile(var1, var2) 获取线程间共享的变量 3.采用CAS的尝试机制(核心所在),代码如下: public fin ...

  4. 学习openldap02

    III (二十二)OpenLDAP 目录服务: 目录是一类为了浏览和搜索数据而设计的特殊的数据库,目录服务是按照树状形式存储信息,目录包含基于属性的描述性信息,并且支持高级的过滤功能,如microso ...

  5. CEPH-3:cephfs功能详解

    ceph集群cephfs使用详解 一个完整的ceph集群,可以提供块存储.文件系统和对象存储. 本节主要介绍文件系统cephfs功能如何灵活的使用,集群背景: [cephadmin@yq01-aip- ...

  6. JS 中的日期时间操作计算实例

    实例 一:已知日期格式为 "YYYY/MM/DD",计算相对于今天的天数差. function fromNow(date){ var mTimes = new Date(date) ...

  7. A小程序与B小程序相互跳转的一点记录

    要点速览: A小程序和B小程序关联同一个公众号 B程序的用户授权 A小程序和B小程序的用户关联 诸葛 io 统计用户访问信息 需求:微信放开小程序互跳的 API 后,一些导流和拉新等活动可以在新的小程 ...

  8. vue和mint-ui loadMore 实现上拉加载和下拉刷新

    首先安装mint-ui组件库 npm install mint-ui 在main.js中引入mint-ui和样式 import 'mint-ui/lib/style.css' import MintU ...

  9. 现在做 Web 全景合适吗?

    Web 全景在以前带宽有限的条件下常常用来作为街景和 360° 全景图片的查看.它可以给用户一种 self-immersive 的体验,通过简单的操作,自由的查看周围的物体.随着一些运营商推出大王卡等 ...

  10. JS+CSS3 360度全景图插件 - Watch3D.js

    日常闲扯 从上一篇文章到这篇中间快过了一年了,时间真滴过得快.不是在下中间没想过写新的文章,而是自己确实变懒了(体重+1 +1 +1 +1....) ..OTL...不过到最后觉得还是需要写点东西,不 ...