[Day19] JavaScript - DOM Event

使用者在浏览网页时会触发很多事件 (Events) 的发生,如点击按钮是一个滑鼠事件、输入讯息是一个键盘事件、网页或图片完成下载时是一个事件、表单栏位值被改变也是一种事件等。

DOM Event 定义很多种事件型态,
让我们可以用 JavaScript 来监听 (listen) 和处理 (event handling) 这些事件:
https://www.w3schools.com/jsref/dom_obj_event.asp


我们可以使用三种方法来定义事件处理程序:

  1. HTML元素属性(Element Attribute)里直接定义

    不建议用此方式,因为事件处理程序是JavasScript程序,会不利於程序码的维护

    <html>
    <body>
    
    	<button onclick="alert('Hello world!')">Click me!</button>
    
    </body>
    </html>
    

    
    <html>
    <body>
    	<button onclick="showAlert()">Click me!</button>
    
    	<script>
    		function showAlert() {
    		alert("show function!")
    	}
    	</script>	
    
    </body>
    </html>
    
  2. 透过DOM属性(Property)定义事件
    在.js档里面定义 ⇒ 同一个元素只能有一个事件,否则会被覆盖

    <button id="myButton">Click me!</button>
    
    function showAlert() {
        alert("show function!")
    }
    
    function secondAlert() {
        alert("show second function!")
    }
    
    let btn = document.getElementId("myButton");
    btn.onclick = showAlert;     //会被secondAlert覆盖 
    btn.onclick = secondAlert;   
    
  3. 透过监听事件addEventListener定义
    相较於 DOM 的方法,addEventListener 是可以对一个元素同时指定多个事件处理函数:

    <button id="myButton">Click me!</button>
    
    function showAlert() {
        alert("show function!")
    }
    
    function secondAlert() {
        alert("show second function!")
    }
    
    let btn = document.getElementById("myButton");
    btn.addEventListener("click", showAlert);
    btn.addEventListener("click", secondAlert);
    
    
    • 使用addEventListener还有一个好处是,我们可以透过removeEventListener,以让在程序运行时删除事件处理程序。removeEventListeners和addEventListener传递的参数是一样的,第一个参数放入"事件类型",第二个参数放入"要删除的事件"。
    <button id="myButton">Click me!</button>
    
    function showAlert() {
        alert("show function!")
    }
    
    function secondAlert() {
        alert("show second function!")
    }
    
    let btn = document.getElementById("myButton");
    btn.addEventListener("click", showAlert);
    btn.addEventListener("click", secondAlert);
    btn.removeEventListener("click", showAlert);  //删除事件处理程序
    
    

<<:  成为工具人应有的工具包-04 VaultPasswordView

>>:  Day 19 印章文字

学习Python纪录Day3 - Aconada安装

Anaconda安装 到Anaconda官网(https://www.anaconda.com/pr...

Day 18 - Android Studio 如何切换Activity(分页)

Day 18 - Android Studio 如何切换Activity(分页) 昨天我们讲了如何使...

Ruby on Rails ⾃订验证器 Validator

现有的验证器不够⽤吗?有几种⽅式可以⾃订验证器: 写⼀个⽅法,挂到 validate ⽅法上: cl...

Day 9 Odoo Pivot View

Odoo模组开发实战 目录 VIEW-Pivot View 第一章 VIEW-Pivot View ...

Day2 - Canvas基础概论 I - 成为Canvas Ninja ~ 理解2D渲染的精髓

Let's Start From Scratch 本系列文章的头几篇我决定还是带点基础的东西,但是我...