美文网首页
DOM事件(一)

DOM事件(一)

作者: 索伯列夫 | 来源:发表于2018-10-20 11:13 被阅读0次

DOM文档:
https://www.w3.org/DOM/DOMTR

DOM1中的事件:

dom1中的事件

链接:https://www.w3.org/TR/2000/WD-DOM-Level-1-20000929/level-one-html.html

DOM level2:

添加了很多events


image.png

看看~链接:https://www.w3.org/TR/2000/REC-DOM-Level-2-Events-20001113/events.html

DOM level3:

没有添加events


image.png

例1:在DOM level0 区分下这几种区别
请问在下边A B C三项中,点击谁会打印hi

<!DOCTYPE html>
<html>
<head>
  <meta charset="utf-8">
  <title>JS Bin</title>
  <script>
    function print(){
      console.log('hi')
    }
  </script>
</head>
<body>
<button id=x onclick=print>A</button>
<button id=y onclick=print()>B</button>
<button id=z onclick=print.call()>C</button>
</body>
</html>

答案:点击B C会执行

onclick = '要执行的代码'
一旦用户点击,浏览器就 eval(‘要执行的代码’)

运行分析:
eval(): https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/eval

function print(){console.log(1)}
eval('print')  //ƒ print(){console.log(1)}
eval('print()')  //1
eval('print.call()')  //1

在上述代码中,我们若用js执行:

x.onclick = print  //类型为函数对象
x.onclick = print()  //undefined
x.onclick = print.call()  //undefined

//一旦用户点击
x.onclick.call(x,{})

例2:在DOM level2中

<button id="xxx">xxx</button>

//队列
//xxx有一个队列EventListener

xxx.addEventListener('click',f1)
xxx.addEventListener('click',f2)
xxx.removeEventListener('click',f1)
xxx.addEventListener('click',f3)


 
//属性,是唯一的,要是有俩就覆盖了
xxx.onclick = function(){
  console.log(100)
}

function f1(){
  console.log(1)
}
function f2(){
  console.log(2)
}
function f3(){
  console.log(3)
}

事件模型:

先捕获,再冒泡。但是如果触发到本身身上(就是在自己身上),就是按照顺序。
注意看注释

<div id="grand1">
    爷爷
    <div id="parent1">
      父亲
      <div id="child1">
        儿子
      </div>
    </div>
  </div>

grand1.addEventListener('click',function(){
  console.log('爷爷')
})//1
parent1.addEventListener('click',function(){
  console.log('父亲')
})//2
child1.addEventListener('click',function(){
  console.log('儿子')
})//3


//谁先执行,3 2 1还是1 2 3
//取决于参数
//addEventListener的第三个参数是false,就从小到大执行,若为true则为从大到小执行
事件模型.png

但是如果触发到本身身上(就是在自己身上),就是按照顺序。这俩前后顺序,就是,谁先写,就是谁。

child1.addEventListener('click',function(){
  console.log('冒泡儿子')
})//3
child1.addEventListener('click',function(){
  console.log('捕获儿子')
},true)//3

相关文章

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

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

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

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

  • DOM事件

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

  • DOM事件

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

  • 2017百度前端面经(电面)

    一面: 1.DOM事件和DOM eventlistener区别 DOM事件同时只能绑定一个同类事件,而DOM ev...

  • DOM0和DOM2级事件简单理解

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

  • 深入理解DOM事件机制

    前言 本文主要介绍: DOM事件级别 DOM事件流 DOM事件模型 事件代理 Event对象常见的方法和属性 一、...

  • 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事件(一)

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