JavaScript 基礎(五)【事件】

定義

事件就是用戶或瀏覽器自身執行的某種動作,click、load、mouseover,都是事件的名字。而響應某個事件的函數就叫做事件處理程序,click的事件處理程序就是onclick,load事件處理程序就是onload

三種方式

1、Html事件處理程序

<input type="button" value="Click me" onclick="alert(clicked)" />

在HTML中指定事件處理程序有兩個缺點,一是存在時間差,如果頁面已經出現了HTML元素,但是js還沒加載完,這時候就會報錯。還有就是會造成js代碼與HTML代碼耦合。

2、將一個函數賦值給一個事件處理程序屬性

var btn = document.getElementById('mybtn');
btn.onclick = function () {
    alert(this.id);    //mybtn
}
可以使用 btn.onclick = null取消

3、添加事件監聽

addEventListener()removeEventListener()

所有DOM節點都包含這兩個方法,並且它們都接收三個參數,要處理的事件名、事件處理函數、一個布爾值。最後一個參數如果是true,表示在捕獲階段調用,如果是false,表示在冒泡階段調用。

事件流

同時點擊多個元素時的事件觸發順序
事件流包含三個階段,事件捕獲階段、處於目標階段和事件冒泡階段。
在這裏插入圖片描述

<div id="calldiv">
	<p id="callp">
		<span id="callspan">
			sss
		</span>
	</p>
</div>
var mydiv = document.getElementById('calldiv');
var myp = document.getElementById('callp');
var myspan = document.getElementById('callspan');
	
mydiv.addEventListener('click', calldiv, true);
myp.addEventListener('click', callp, true);
myspan.addEventListener('click', callspan, true);
function calldiv() {
	alert('div');
}
function callp() {
	alert('p')
}
function callspan() {
	alert('span')
}

事件委託:也稱事件代理 就是利用冒泡的原理 把加事件加到父級上,觸發執行效果

事件對象

綁定的函數會默認傳入一個事件對象,事件對象的currentTarget == this
在元素標籤中用onclick等綁定的事件沒有事件對象,this == window
event.preventDefault():取消事件對象的默認動作。
event.stopPropagation()/ event.cancelBubble = true:阻止事件傳播。

事件

事件可以是用戶行爲,也可以是瀏覽器行爲

用戶行爲

鼠標事件

click:單擊事件。
dblclick:雙擊事件。
mousedown:按下鼠標鍵時觸發。
mouseup:釋放按下的鼠標鍵時觸發。
mousemove:鼠標移動事件。
mouseover:移入事件。
mouseout:移出事件。
mouseenter:移入事件。
mouseleave:移出事件。
contextmenu:右鍵事件。

鍵盤事件

keydown:按鍵按下
keyup:按鍵擡起
keypress:按鍵按下擡起

HTML事件

load:文檔加載完成
select:被選中的時候
change:內容被改變
focus:得到光標
resize:窗口尺寸變化
scroll:滾動條移動

表單事件

onblur 元素失去焦點時觸發
onchange 該事件在表單元素的內容改變時觸發
onfocus 元素獲取焦點時觸發
onfocusin 元素即將獲取焦點時觸發
onfocusout 元素即將失去焦點時觸發
oninput 元素獲取用戶輸入時觸發
onreset 表單重置時觸發
onsearch 用戶向搜索域輸入文本時觸發 ( <input="search">)
onselect 用戶選取文本時觸發 ( <input><textarea>)
onsubmit 表單提交時觸發

瀏覽器行爲

onload	頁面加載完成後觸發
ononline 該事件在瀏覽器開始在線工作時觸發。	 
onoffline 該事件在瀏覽器開始離線工作時觸發。	 
onstorage 該事件在 Web Storage(HTML 5 Web 存儲)更新時觸發	 
onwheel 該事件在鼠標滾輪在元素上下滾動時觸發	
transitionend 該事件在 CSS 完成過渡後觸發。
animationend 該事件在 CSS 動畫結束播放時觸發	 
animationiteration 該事件在 CSS 動畫重複播放時觸發	 
animationstart 該事件在 CSS 動畫開始播放時觸發	
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章