美文网首页
JavaScript学习笔记(五)——事件

JavaScript学习笔记(五)——事件

作者: 嘤嘤嘤666 | 来源:发表于2016-09-05 14:44 被阅读0次

DOM2级事件流

事件流描述的是从页面中接收事件的顺序,DOM2级事件规定的事件流包括三个阶段:事件捕获阶段、处于目标阶段、事件冒泡阶段。

HTML事件处理程序

<script>
  function show(){
    alert("Hello!~");
  }
</script>
<input type="button" value="Click Me" onclick="showMessage()" />

缺点:

  1. 时差问题导致的错误。如果在showMessage()函数有定义之前单击了按钮,就会引发错误。
  2. 这样扩展事件处理程序的作用域链在不同浏览器中会导致不同的结果。
  3. HTML与JavaScript代码紧密耦合。如果要更换事件处理程序,就要改动两个地方。

DOMO0级事件处理程序

事件处理程序在其所属元素的作用域内运行。

var btn = document.getElementById("button");
btn.onclick = function(){
  alert(this.id);// "button"
};

IE事件处理程序

事件处理程序在全局作用域内运行。

var btn = document.getElementById("button");
btn.attachEvent("onclick",function(){
  alert(this);// window
});

DOM2级事件处理程序

var btn = document.getElementById("button");
var action = function(){
  alert(this);
};
btn.addEventListener("click", action, false);// false表示在冒泡阶段调用事件处理程序;true表示在捕获阶段调用事件处理程序

btn.remoEventListener("click", action, false);

事件对象

在触发DOM上的某个事件,会产生一个事件对象event,这个对象中包含着所有与事件有关的信息。

var btn = document.getElementById("buton");
btn.addEventListener("click", function(event){
  alert(event.type); //"click"
},false);

阻止特定事件的默认行为,使用preventDefault()方法。

var link = document.getElementById("link");
link.onclick = function(event){
  event.preventDefault();
}

在需要用过一个函数处理多个事件时,可以使用type属性

var btn = document.getElementById("button");
var handler = function(event){
  switch(event.type){
    case "click":
      alert("Clicked");
      break;

    case "mouseover":
      event.target.style.backgroundColor = "red";
      break;

    case "mouseout":
      event.target.style.backgroundColor = "";
      break;
  }
};

btn.onclick = hander;
btn.onmouseover = handler;
btn.onmouseout = handler;

事件委托

对“事件处理程序过多” 问题的解决方案就是事件委托。事件委托利用了事件冒泡,只指定一个事件处理程序,就可以管理某一类的所有事件。例如,click事件会一直冒泡到document层次,所以我们可以为整个页面制定一个onclick事件处理程序,而不必给每个可单机的元素分别添加事件处理程序。

HTML

<ul id="myLinks">
  <li id="a"></li>
  <li id="b"></li>
  <li id="c"></li>
</ul>

JavaScript

  var list = document.getElementById("myLinks");

  EventUtil.addHandler(list, "click", function(event){
    event = EventUtil.getEvent(event);

    switch(target.id){
      case "a":
        console.log("1");
        break;

      case "b":
        console.log("2");
        break;

      case "c":
        console.log("3"):
        break;
    }
  });

相关文章

  • JavaScript ☞ day3

    JavaScript基础学习笔记之JavaScript进阶 焦点事件 鼠标事件-单击与双击 鼠标事件-mouseo...

  • JavaScript学习笔记(五)——事件

    DOM2级事件流 事件流描述的是从页面中接收事件的顺序,DOM2级事件规定的事件流包括三个阶段:事件捕获阶段、处于...

  • Javascript学习笔记-Event事件

    在前端开发过程中,页面交互过程和事件机制密不可分,一直以来对于事件相关机制了解的不够深刻,没有好好进行了解,最近花...

  • JavaScript学习笔记(五)

    慕课网JavaScript进阶篇第9章学习笔记 JavaScript进阶篇—第9章 JavaScript学习笔记(...

  • JavaScript学习笔记二

    JavaScript学习笔记二 个人学习笔记参考阮一峰的JavaScript教学学习笔记二是对学习笔记一的补充 J...

  • JavaScript的事件机制

    在JavaScript的学习中,我们经常会遇到JavaScript的事件机制,例如,事件绑定、事件监听、事件委托(...

  • JavaScript学习笔记(五)

    主要源于廖雪峰老师的JavaScript教程 面向对象编程 1. 简介 JavaScript的面向对象编程和大多数...

  • JavaScript学习笔记三

    JavaScript学习笔记三 个人学习笔记参考阮一峰的JavaScript教学类型转换,内存,深拷贝,关于内存的...

  • Javascript事件笔记

    事件在DOM结构中传播的顺序叫事件流,分三个阶段:事件捕获、事件发生、事件冒泡 现代浏览器事件冒泡一直冒到wind...

  • 笔记 for JavaScript 事件

    HTML 事件 HTML 事件可以是浏览器行为,也可以是用户行为。以下是 HTML 事件的实例: HTML 页面完...

网友评论

      本文标题:JavaScript学习笔记(五)——事件

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