iT邦幫忙

2024 iThome 鐵人賽

DAY 19
1
JavaScript

從零開始學習JavaScript 30天系列 第 19

[Day 19] JavaScript 事件處理(Event Handling)

  • 分享至 

  • xImage
  •  

Hi,大家好,我是Tony,是一個對於JavaScript有一點點概念的新手。

挑戰第19天了,加油!
今天的學習內容是:JavaScript 事件處理(Event Handling)
彭彭老師說今天的內容是入門當中的最後一個主題。

學習內容來自
彭彭老師JavaScript Event Handling 事件處理
https://www.youtube.com/watch?v=7qjRxCPI7f8&list=PL-g0fdC5RMbqW54tWQPIVbhyl_Ky6a2VI&index=24

昨天的學習內容:[Day 18] JavaScript HTML DOM 網頁標籤選單練習-自我簡歷頁面
https://ithelp.ithome.com.tw/articles/10346273

1. 什麼叫做 事件?

事件,就是在網頁上發生了一件事情
事情發生了,就是要去執行相對應的程式來處理,
也就是事件處理

2. 事件種類

不同的事件種類,會有不同的觸發時機。
以下是常見的事件種類:

  • click 滑鼠點擊
  • mouseover 滑鼠移入
  • mouseout 滑鼠移出
  • mousedown 滑鼠按住(按下滑鼠不放開)
  • mouseup 滑鼠放開

3. 事件處理的三大關鍵

在事件處理的時候有三大關鍵點需要去注意!

  1. 在哪個標籤上發生事件?
  2. 事件的種類是什麼?
  3. 事件對應的處理函式是什麼?

4. 註冊事件處理函式

了解關鍵點後,開始來處理要做的程式。
要在某個標籤上將函式與事件做對應,就要註冊事件處理函式。
基本語法:在div、button標籤中,寫入 事件名稱="程式碼"。範例如下,

<div 事件名稱="程式碼">我是標籤內文</div>
<button 事件名稱="程式碼">我是標籤內文</button>

帶入事件與程式碼就會寫成如下方的例子:

<div onclick="change();">點擊</div>
<script>
    function change(){
        document.body.innerHTML="Hello";
    }
</script>

5.事件處理 範例一:一個標籤一個事件

  • 點擊改變標籤本身的內文

在這裡使用this關鍵字,代表觸發事件的標籤
下方範例中的this,指的就是div標籤

<div oncilck=change(this);>我是原本的內文</div>
<script>
    function change(elem){
        elem.innerHTML="我是新的內文";
    }
</script>

程式的意思是,
點擊文字內容(this)"我是原本的內文",
觸發函式,函式傳進參數代表div,之後改變內文為"我是新的內文"。

6. 事件處理 範例二:多個事件搭配使用(一個標籤兩個事件)

  • 滑鼠按住、滑鼠放開,同時運作範例程式

直接來看程式語法:

<button
    onmousedown="down(this);"
    onmouseup="up(this);"
>我是按鈕</button>
<script>
    function down(elem){
        elem.style.color="red"
    }
    function up(elem){
        elem.style.color="black"
    }
</script>

程式的意思是,
滑鼠按下按鈕不放開,按鈕變成紅色,
滑鼠放開按鈕,按鈕變成黑色。
針對按鈕這個標籤,有兩個事件在運作。

了解這些概念後,接著進入練習。


練習

  • 練習1:各種類事件的觸發練習

先利用console.log來印文字,對應觸發的事件,
來了解自己觸發了哪些事件。

<body>
    <h3>各種類事件的觸發練習</h3>
    <button 
        onclick="console.log('點擊事件')"
        onmouseover="console.log('滑鼠移入')"
        onmouseout="console.log('滑鼠移出')"
        onmousedown="console.log('滑鼠按住')"
        onmouseup="console.log('滑鼠放開')"
    >點我</button>
</body>

網頁結果1 (點擊Youtube影片播放)
Yes


  • 練習2:用span製作按鈕,多事件搭配使用。

原本內建的按鈕程式不太好看,
利用span,結合CSS,製作按鈕。
搭配多個事件,觸發不同的效果。

<head>
    <style>
        .btn{
            background-color:#ffcccc;
            padding:15px;border-radius:10px;
            cursor:pointer;
        }
    </style>
</head>
<body>
    <span
        class="btn"
        onmouseover="over(this);"
        onmouseout="out(this);"
        onmousedown="down(this);"
        onmouseup="up(this);"
    >我是按鈕</span>
    <script>
        function over(elem){
            elem.style.backgroundColor="#ddaaaa";
        }
        function out(elem){
            elem.style.backgroundColor="#ffcccc";
        }
        function down(elem){
            elem.style.fontWeight="bold";
        }
        function up(elem){
            elem.style.fontWeight="normal";
        }
    </script>
</body>

網頁結果2 (點擊Youtube影片播放)
滑鼠移入,按鈕顏色改變。
滑鼠移出,按鈕顏色變回原本的樣子。
滑鼠按住,字體變粗。
滑鼠放開,字體變回原本樣子。
Yes

以上就是今天的學習內容!
終於開始有在設計自己網頁的感覺了~
謝謝大家,前幾天還有東西要補起來,希望可以趕快補上!
我們明天見。


上一篇
[Day 18] JavaScript HTML DOM 網頁標籤選單練習-自我簡歷頁面
下一篇
[Day 20] JavaScript HTTP 通訊協定簡介
系列文
從零開始學習JavaScript 30天30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 則留言

0
Sonic
iT邦新手 5 級 ‧ 2024-09-23 16:58:36
<div oncilck=change(this);>我是原本的內文</div>

oncilck 打錯字,應為 onclick

我要留言

立即登入留言