[JavaScript] - Event-addEventListener(事件監聽)
本篇主要是透過線上課程:udemy
、w3school
及網路上搜尋資源所學習的。
Event
Event
事件就是在操控瀏覽器時,會有點擊,滾動滑鼠,按下按鍵等都是事件的行為,當觸發這些行為時就會去執行寫好的程式行為。
事件監聽(addEventListener)
JavaScript 是一個事件驅動 (Event-driven) 的程式語言,當瀏覽器載入網頁開始讀取後,雖然馬上會讀取 JavaScript 事件相關的程式碼,但是必須等到「事件」被觸發(如使用者點擊、按下鍵盤等)後,才會再進行對應程式的執行。
透過事件監聽來監聽事件有沒有被觸發。
以下為監聽元素class='btn'
有沒有被點擊到的監聽案例:
1 | var el = document.querySelector(".btn"); |
事件綁定的差異
以點擊的案例來舉例,點擊可以透過onclick = function(){...}
,
或是addEventListener('click', function(){...},false)
來達成,但是兩者之間還是有差異。
在同時綁定多個事件時,onclick 只會顯示最後一個的事件,addEventListener 則是全部都會顯示。
1 | <input type="button" class="btnOn" value="on點擊" /> |
1 | // onclick只會顯示最後一個的事件 |
帶出當下元素的資訊
用例子來說明,在 html 頁面建立一個 input button,用onclick
事件來執行 function,在小括號中帶入一個參數,在大括號中再帶入的先前設定的參數。之後觸發事件後就可以印出當下元素各種資訊。
這個帶入參數的方式,在很多事件行為操作都需要利用到這個參數。
1 | <input type="buttom" value="click" class="btn" /> |
1 | var el = document.querySelector(".btn"); |
結果如下圖:
preventDefault
preventDefault()
可以取消元素的預設行為,比如說選取到的是<a href="index.html">
連結,但並不想要點擊的時候回到 index.html 的頁面。
以<a href="https://www.google.com.tw/">
為例子。
1 | <a href="https://www.google.com.tw/" class="link">Orow Projects</a> |
1 | var el = document.querySelector(".link"); |
或者選取到 form 表單裡面submit
的按鈕,不想要點擊後馬上送出資料到後端,想要先在 local 端先進行基礎驗證的時候就可以使用這個preventDefault
的方式。
取消預設行為後,要再傳送資料到後端的話,javascript 中會用 post 的方式來傳送。
target - 目前在網頁上的位置
舉一個例子來說,想要知道滑鼠現在是點擊到哪一個位置的時候,就會用.target
的方式。
當然.target
裡面還有很多資訊可以利用,這邊就課程上一開始提到的方式來舉例。
1 | <div class="header"> |
1 | var el = document.querySelector(".header"); |
上面的方式在網頁上點擊過後,console.log就會印出是ul
,li
或是a
。