美文网首页
DOM事件里那点不能不说的小事情

DOM事件里那点不能不说的小事情

作者: 潘千千 | 来源:发表于2018-07-27 15:24 被阅读0次
前言:今天才发现,原来我对DOM事件理解的如此不够深入,仅限于做点正常的页面,顿时感觉自己不是一个合格的前端程序员,现在,我就用这篇文章也算是给大家做一个小测试,看你们对DOM事件有多少的了解呢~~

关键词:DOM事件,addEventListener,onclick~~......

正文:
一、这是一个小例子

<head>
  <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>
js:
x.onclick = print
y.onclick = print()     //undefined
z.onclick = print.call()         //undefined

现在,问题来了,ABCXYZ几种方法里面哪个会打印出hi~~
六秒钟思考,6,5,4,3,2,1
答案:BCX会打印出hi
二、这是第二个小例子

<body>
    <button id=xxx >A</button>
</body>
js:
xxx.addEventListener('click',function(){
  console.log(1);
})
xxx.onclick = function (){
    console.log(1);
}

请问,这两个有什么区别吗?
答案:
  

xxx.onclick = function (){//是属性,唯一
    console.log(1);
}

一个节点只能有这样的一个onclick,试想如下情况:

xxx.onclick = function (){
    console.log(1);
}
xxx.onclick = function (){
    console.log(2);
}

  那请问是打印出1还是2呢?答案是2.那1去哪里呢,当然是被2覆盖了。试想如果在工作中,你和你的同事出现了上述情况,,,,后续大家自行脑补。
  onclick说完了,我们说下
xxx.addEventListener('click',function(){
console.log(1);
}),这个和onclick有什么区别呢?xxx.addEventListener,这是个队列,是个
事件监听队列。当你写出如下代码时

xxx.addEventListener('click',function(){
  console.log(1);
})
xxx.addEventListener('click',function(){
  console.log(2);
})

  会先打出1,再打出2.为什么?我先问你一个问题,队列的特点是什么?答:

先进先出

xxx拥有一个队列 eventListeners ,你不能直接访问他,但是你可以通过addEventListener往这个队列里排一个队,现在,排是排进去了,但是怎么走呢?
三、这是第三个小例子

function f1 (){
    console.log('1');
}
function f2 (){
    console.log('2');
}
function f3 (){
    console.log('3');
}
xxx.addEventListener('click',f1})
xxx.addEventListener('click',f2})
xxx.removeEventListener('click',f1})
xxx.addEventListener('click',f3})
xxx.removeEventListener('click',f3})

答案:只打印出2
那现在有没有什么方法让addEventListener click点击一次再点击就不行了呢?

function f1 (){
 console.log('1');
 xxx.addEventListener('click',f1})
}
xxx.addEventListener('click',f1})

也就是触发一次事件后马上再把它从队列里移走。

相关文章

  • DOM事件里那点不能不说的小事情

    前言:今天才发现,原来我对DOM事件理解的如此不够深入,仅限于做点正常的页面,顿时感觉自己不是一个合格的前端程序员...

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

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

  • DOM事件

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

  • 事件

    1.DOM0 事件和DOM2级在事件监听使用方式上有什么区别? DOM0:事件处理程序是在元素的作用域里运行,只能...

  • DOM事件

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

  • Dom事件

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

  • 3-6 DOM事件

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

  • DOM事件类

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

  • DOM事件

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

  • DOM0和DOM2级事件简单理解

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

网友评论

      本文标题:DOM事件里那点不能不说的小事情

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