DOM事件

作者: sxfshdf | 来源:发表于2018-10-16 16:03 被阅读0次

DOM级别与DOM事件

DOM级别:DOM0级,DOM1级,DOM2级和DOM3级
DOM事件:DOM0级事件处理,DOM2级事件处理和DOM3级事件处理
(1级DOM标准中没有定义事件相关内容)
目前最广泛标准是 DOM2。

DOM level 0

<button id=X onclick="print"></button>
<button id=Y onclick="print()"></button> 
<button id=Z onclick="print.call()"></button> 

<script>
   function print(){
     console.log('hi')
   }
   
    X.onclick = print 
    Y.onclick = print()
    Z.onclick = print.call()
</script>

请问上面哪几个能打印出 ‘hi’

<button id=Y onclick="print()"></button> 
<button id=Z onclick="print.call()"></button> 

X.onclick = print 

onclick = "要执行的代码”
用户一旦点击,浏览器就 eval("要执行的代码") 即 eval("print")

function print(){
    console.log('hi')
}
eval('print') // ƒ print(){console.log('hi')}
eval('print()') // hi
eval('print.call()') // hi
X.onclick = print // 类型为 函数对象
// 一旦用户点击,浏览器就执行 X.onclick.call(X,{})  
// X.onclick 需要一个函数

DOM level 2

<button id=X >X</button>

<script>
  X.addEventListener('click',function(){console.log('1)}) // 1
  X.onclick = function(){console.log('2')} 
  
// 两者的区别,后面的是一个属性,是唯一的,后面的会覆盖前面的
// 前者是一个队列模型,先进先出,函数会依次触发

</script>
function f1(){console.log(1)}
function f2(){console.log(2)}

X.addEventListener('click',f1)
X.addEventListener('click',f2)
// 1
// 2
X.removeEventListener('click',f1)
// 2

DOM事件流

addEventListener的第三个参数为指定事件是否在捕获阶段执行,设置为true表示事件在捕获阶段执行,而设置为false表示事件在冒泡阶段执行。

<div class="grand1">
  爷爷
  <div class="parent">
    爸爸
    <div class="child">
      儿子
    </div>
  </div>
</div>

<script>
// 当点击了儿子之后,是否点击了爸爸和爷爷
// yes

// 当点击儿子之后,三个函数是否调用
grand1.addEventListener('click',function f1(){
  console.log('爷爷')
})
parent1.addEventListener('click',function f2(){
  console.log('爸爸')
})
child1.addEventListener('click',function f3(){
  console.log('儿子')
})

// 请问 f1 f2 f3执行顺序
// 1 2 3 or 3 2 1

// 都可以
// 传第三个参数值为 false / null / NaN / '' / 0 / undefined / 或者默认不传值
grand1.addEventListener('click',function f1(){
  console.log('爷爷')
})
parent1.addEventListener('click',function f2(){
  console.log('爸爸')
})
child1.addEventListener('click',function f3(){
  console.log('儿子')
})
// 执行顺序为 3 2 1
// 儿子 爸爸 爷爷

// 传第三个参数为 ture
grand1.addEventListener('click',function f1(){
  console.log('爷爷')
},true)
parent1.addEventListener('click',function f2(){
  console.log('爸爸')
},true)
child1.addEventListener('click',function f3(){
  console.log('儿子')
},true)
// 执行顺序为 1 2 3
// 爷爷 爸爸 儿子

相关文章

  • 前端面试题(3)——DOM事件类

    基本概念:DOM事件的级别 DOM事件模型:事件冒泡事件捕获 DOM事件流 描述DOM事件捕获的具体流程 Even...

  • DOM事件

    DOM级别与DOM事件 DOM级别:DOM0级、DOM1级、DOM2级、DOM3级DOM事件:DOM0级事件处理、...

  • DOM事件

    DOM级别与DOM事件 DOM级别:DOM0级,DOM1级,DOM2级和DOM3级DOM事件:DOM0级事件处理,...

  • DOM0和DOM2级事件简单理解

    关于DOM0 和DOM1级事件可以简单理解为:事件分为DOM 0级事件和Dom 2级事件,DOM2级事件也叫做事件...

  • Dom事件

    基本概念 Dom事件级别 Dom事件模型 Dom事件流 描述Dom事件捕获的具体流程 Event对象的常见应用 自...

  • 3-6 DOM事件

    问题 DOM 事件的级别 DOM 事件模型(就是捕获和冒泡儿) DOM 事件流 描述DOM事件捕获的具体流程 Ev...

  • HTML DOM 事件

    HTML DOM 事件 HTML DOM 事件 HTML DOM 事件允许Javascript在HTML文档元素中...

  • 网易微专业-DOM编程艺术 05 事件

    1、DOM事件⑴主要内容▪事件流▪事件注册▪事件对象▪事件分类▪事件代理 ⑵什么是DOM事件▪点击一个DOM元素▪...

  • DOM事件类

    基本概念:DOM事件的级别 DOM事件模型 DOM事件流 描述DOM事件捕获的具体流 Event对象的常见应用 自...

  • DOM事件

    DOM事件的级别 DOM事件模型 DOM事件流 描述DOM时间捕获的具体流程 Event对象的常见应用 自定义事件...

网友评论

      本文标题:DOM事件

      本文链接:https://www.haomeiwen.com/subject/vlkhzftx.html