JavaScript事件詳細(xì)講解
事件的概念
事件:指的是文檔或者瀏覽器窗口中發(fā)生的一些特定交互瞬間。我們可以通過偵聽器(或者處理程序)來預(yù)定事件,以便事件發(fā)生的時(shí)候執(zhí)行相應(yīng)的代碼。
一、事件流
1.事件流:描述的是在頁(yè)面中接受事件的順序
2.事件冒泡:由最具體的元素接收,然后逐級(jí)向上傳播至最不具體的元素的節(jié)點(diǎn)(文檔)
3.事件捕獲:最不具體的節(jié)點(diǎn)先接收事件,而最具體的節(jié)點(diǎn)應(yīng)該最后接收事件
二、事件處理
1.HTML事件處理:直接添加到HTML結(jié)構(gòu)中
2.DOM0級(jí)事件處理:把一個(gè)函數(shù)賦值給一個(gè)事件處理程序?qū)傩?/p>
3.DOM2級(jí)事件處理:
addEventListener("事件名","事件處理函數(shù)",布爾值)
true:事件捕獲
false:事件冒泡
removeEventListener();
4.IE事件處理程序
attachEvent
detachEvent
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title></title>
</head>
<body>
<div id="div">
<button id="btn1">按鈕</button>
</div>
<!--<script>
function demo(){
alert("Hello HTML事件處理");
}
</script>-->
<!--<script>
var btn1 = document.getElementById("btn1");
btn1.onclick = function(){alert("Hello DOM0級(jí)事件處理程序")};//被覆蓋掉
btn1.onclick = function(){alert("Hello DOM0級(jí)事件處理程序2")};
btn1.onclick = function(){alert("Hello DOM0級(jí)事件處理程序3")};
</script>-->
<!--<script>
var btn1 = document.getElementById("btn1");
btn1.addEventListener("click",demo1);
btn1.addEventListener("click",demo2);
btn1.addEventListener("click",demo3);
function demo1(){
alert("DOM2級(jí)事件處理程序1");
}
function demo2(){
alert("DOM2級(jí)事件處理程序2");
}
function demo3(){
alert("DOM2級(jí)事件處理程序3");
}
btn1.removeEventListener("click",demo2)
</script>-->
<script>
var btn1 = document.getElementById("btn1");
if(btn1.addEventListener){
btn1.addEventListener("click",demo);
}else if(btn1.attachEvent){
btn1.attachEvent("onclick",demo)
}else{
btn1.onclick = demo();
}
function demo(){
alert("Hello");
}
</script>
</body>
</html>
三、事件對(duì)象
1、事件對(duì)象:在觸發(fā)DOM事件的時(shí)候都會(huì)產(chǎn)生一個(gè)對(duì)象
2、事件對(duì)象event:
type:獲取事件類型
target:獲取事件目標(biāo)
stopPropagation():阻止事件冒泡
preventDefault():阻止事件默認(rèn)行為
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title></title>
</head>
<body>
<div id="div">
<button id="btn1">按鈕</button>
<a id="aid">百度</a>
</div>
<script>
document.getElementById("btn1").addEventListener("click",showType);
document.getElementById("div").addEventListener("click",showDiv);
document.getElementById("aid").addEventListener("click",showA);
function showType(event){
// alert(event.type);
alert(event.target);
event.stopPropagation();//阻止事件冒泡
}
function showDiv(){
alert("div")
}
function showA(event){
// event.stopPropagation();
// event.preventDefault();
}
</script>
</body>
</html>
- js網(wǎng)頁(yè)滾動(dòng)條滾動(dòng)事件實(shí)例分析
- js實(shí)現(xiàn)滑動(dòng)觸屏事件監(jiān)聽的方法
- js實(shí)現(xiàn)用戶離開頁(yè)面前提示是否離開此頁(yè)面的方法(包括瀏覽器按鈕事件)
- 淺談javascript的Touch事件
- javascript性能優(yōu)化之事件委托實(shí)例詳解
- 詳解Javascript事件驅(qū)動(dòng)編程
- 理解JS事件循環(huán)
- 實(shí)例講解javascript注冊(cè)事件處理函數(shù)
- js和jquery實(shí)現(xiàn)監(jiān)聽鍵盤事件示例代碼
相關(guān)文章
javascript下function聲明一些小結(jié)
function聲明一些東西,我們都知道function和var一樣是預(yù)處理的在js里面,但是到底什么是函數(shù)聲明呢,我們來看幾個(gè)例子2007-12-12
關(guān)于微信小程序?qū)崿F(xiàn)云支付那些事兒
我們?cè)谧鲂〕绦蛑Ц断嚓P(guān)的開發(fā)時(shí),總會(huì)遇到這些難題,下面這篇文章主要給大家介紹了關(guān)于微信小程序?qū)崿F(xiàn)云支付那些事兒,文中通過圖文介紹的非常詳細(xì),需要的朋友可以參考下2021-09-09
jQuery實(shí)現(xiàn)可收縮展開的級(jí)聯(lián)菜單實(shí)例代碼
這篇文章主要是對(duì)利用jQuery實(shí)現(xiàn)可收縮展開的級(jí)聯(lián)菜單的實(shí)例代碼進(jìn)行了詳細(xì)的介紹,需要的朋友可以過來參考下,希望對(duì)大家有所幫助2013-11-11
JavaScript reduce和reduceRight詳解
這篇文章主要介紹了JavaScript reduce和reduceRight的高級(jí)用法詳解的相關(guān)資料,需要的朋友可以參考下2016-10-10
基于JavaScript Array數(shù)組方法(新手必看篇)
下面小編就為大家?guī)硪黄贘avaScript Array數(shù)組方法(新手必看篇)。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2016-08-08
跟我學(xué)習(xí)javascript的函數(shù)調(diào)用和構(gòu)造函數(shù)調(diào)用
跟我學(xué)習(xí)javascript的函數(shù)和構(gòu)造函數(shù)調(diào)用,主要包括三方面內(nèi)容函數(shù)調(diào)用、方法調(diào)用以及構(gòu)造函數(shù)調(diào)用,想要了解這些內(nèi)容的朋友千萬(wàn)不要錯(cuò)過下面的內(nèi)容。2015-11-11

