日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

js事件处理、事件对象

發(fā)布時間:2023/12/10 编程问答 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 js事件处理、事件对象 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

事件類型分類:

1 添加在html結構中的事件

<div id="div1" onclick="alert('append click event in html')"> </div>

點擊div1之后彈出 append click event in html;其實在html結構中添加的事件也屬于dom0級事件。

2 dom0級事件處理

<div id="div1"> </div> <script>var dom1 = document.getElementById('div1');dom1.onclick = function(){alert(' first dom0 ')};dom1.onclick = function(){alert(' second dom0 ')}; </script>

點擊div1之后只彈出 second dom0;說明dom0級事件后面賦值的事件會覆蓋掉前面的

如果在div中在加 onclick="alert('append click event in html'), 代碼如下:

<div id="div1" onclick="alert('append click event in html')"> </div> <script>var dom1 = document.getElementById('div1');dom1.onclick = function(){alert(' first dom0 ')};dom1.onclick = function(){alert(' second dom0 ')}; </script>

點擊div后 仍然只彈出second dom0, 說明在html中添加的點擊事件處理程序也被覆蓋。

實際上 dom1.onclick 等價于html結構中div標簽中的οnclick=""; 可以把onclick看成dom元素對象的一個屬性 dom1{ id:"1", onclick:function(){ ... } }

3 dom2級事件處理

dom.addEventListener(“事件名”,“事件處理程序”,“布爾值”)

布爾值表示該事件的響應順序,默認值為false。

true:事件捕獲:表示在捕獲階段調用事件處理程序。 false:事件冒泡:表示在冒泡階段調用事件處理程序。
事件傳遞有兩種方式:冒泡與捕獲。
事件傳遞定義了元素事件觸發(fā)的順序。 如果你將 <p> 元素插入到 <div> 元素中,用戶點擊 <p> 元素, 哪個元素的 "click" 事件先被觸發(fā)呢?
在 冒泡 中,內部元素的事件會先被觸發(fā),然后再觸發(fā)外部元素,即: <p> 元素的點擊事件先觸發(fā),然后會觸發(fā) <div> 元素的點擊事件。
在 捕獲 中,外部元素的事件會先被觸發(fā),然后才會觸發(fā)內部元素的事件,即: <div> 元素的點擊事件先觸發(fā) ,然后再觸發(fā) <p> 元素的點擊事件。
關于事件冒泡和捕獲在后面再舉出實例代碼。 使用addEventListener添加事件不會被覆蓋也不會覆蓋dom0級事件,如下: <div id="div1" onclick="alert('append click event in html')"> </div> <script>var dom1 = document.getElementById('div1');var handle = function () {alert('dom2 event handle');};dom1.onclick = function(){alert(' first dom0 ')};dom1.onclick = function(){alert(' second dom0 ')};dom1.addEventListener("click", function(){alert(' first dom2 ')}, false);dom1.addEventListener("click", handle, false); </script> 點擊div1時彈出 second dom0、first dom2 、dom2 event handle ,dom0級綁定的最后一個事件覆蓋了前面所有的dom0級事件,而綁定的兩個dom2級事件都存在,并且先執(zhí)行dom0級事件在執(zhí)行dom2級事件。 ? 使用removeEventListener移除事件,傳入的參數(shù)與添加處理程序時addEventListener使用的參數(shù)相同。 這也意味著事件處理程序為匿名函數(shù)的無法移除,如下所示: <div> </div> <script>var dom1 = document.getElementById('div1');var handle = function () {alert('event handle');};dom1.addEventListener("click", function(){alert(' first dom2 ')}, false);dom1.addEventListener("click", function(){alert(' second dom2 ')}, false);dom1.addEventListener("click", handle, false);dom1.removeEventListener("click", handle, false); dom1.removeEventListener("click", function(){alert(' second dom2 ')}, false); </script>

點擊div1依次彈出 first dom2 second dom2

關于事件冒泡和捕獲的代碼實例:

<div id="div1"><div id="div2"><div id="div3"><div id="div4"></div></div></div></div> <script>var html = document.getElementsByTagName('html')[0];var body = document.getElementsByTagName('body')[0];var dom1 = document.getElementById('div1');var dom2 = document.getElementById('div2');var dom3 = document.getElementById('div3');var dom4 = document.getElementById('div4');window.addEventListener("click", function(){alert('window')}, false);document.addEventListener("click", function(){alert('document')}, true);html.addEventListener("click", function(){alert('html')}, false);body.addEventListener("click", function(){alert('body')}, true);dom1.addEventListener("click", function(){alert('div1')}, false);dom2.addEventListener("click", function(){alert('div2')}, true);dom3.addEventListener("click", function(){alert('div3')}, false);dom4.addEventListener("click", function(){alert('div4')}, false);// addEventListen 添加的第三個參數(shù)true則是事件捕獲,不添加或false則為事件冒泡, 由事件源dom4元素 --> 父元素dom3 --> 爺爺元素dom2 --> ... --> body --> html --> document --> window 執(zhí)行事件處理程序// 若從事件源dom4元素到window 有存在事件捕獲的綁定事件 ,則事件從window到事件源dom4 依次執(zhí)行完設置為true的捕獲事件 在從事件源dom到window執(zhí)行完其他未設置為true的冒泡事件。//如上述代碼 依次彈出 document body div2 div4 div3 div1 html window </script>

注意:IE8及更早IE版本,Opera7.0及其更早版本不支持 addEventListener() 和 removeEventListener() 方法。

對于這類瀏覽器版本可以使用 attachEvent() 方法來添加事件,detachEvent() 方法來移除事件句柄

? 事件對象:在觸發(fā)dom事件的時候都會產生一個事件對象 ? 事件對象event: 1) type:獲取事件類型 2) target:獲取事件目標 3) stopPropagation():阻止事件冒泡 4) preventDefault():阻止事件默認行為 <div id="div1"> </div> <script>var dom1 = document.getElementById('div1');dom1.addEventListener("click",function(event){console.log(event.type);console.log(event.target)}) </script> ?console.log 輸出: click , <div id="div1"> </div>
<div><a></a></div> <script>dom_div.addEventListener("click",fun_div)dom_a.addEventListener("click",fun_a) </script> 點擊a時觸發(fā)fun_a 由于事件冒泡再觸發(fā)fun_div ? 在fun_a的末尾添加event.stopPropagation():阻止事件冒泡 則div中的click事件fun_div無效 ? <a href="http://www.baidu.com"></a> dom_1.addEventListener("click",function(event){}) 點擊之后a會跳轉到百度 在回調函數(shù)function中添加event.preventDefault();阻止事件默認行為 點擊之后不會跳轉 ?

轉載于:https://www.cnblogs.com/peakleo/p/6090385.html

總結

以上是生活随笔為你收集整理的js事件处理、事件对象的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 伊人影院在线观看视频 | 日本a∨视频 | 在线视频免费播放 | 爽爽爽av | 久久夜色精品亚洲 | 久久网站视频 | 亚洲AV无码精品自拍 | 色婷婷亚洲一区二区三区 | 国产精品国产三级国产专区51 | 色吟av | 国产91沙发系列 | 天天干视频在线 | 久久影视中文字幕 | 男男gay羞辱feet贱奴vk | 色片在线免费观看 | 无套内谢老熟女 | 综合久久久 | 日韩成人在线看 | 国产精品久久久91 | 日本高清视频一区二区 | 黄色日批| 中文一区二区在线播放 | 我们俩电影网mp4动漫官网 | 亚洲 欧美 自拍偷拍 | 天堂а√在线中文在线鲁大师 | 中文字幕免费在线看线人动作大片 | 成年人视频网 | 国产手机在线观看 | 天天色图片| 中文字幕在线视频一区二区 | 中文字幕日韩一区 | 99热精品免费 | 三级a视频 | 黄色av不卡| 久久性色 | 国产a自拍 | 尹人久久 | 亚洲欧洲精品一区二区三区 | 国产xxxx在线 | 成年人国产精品 | 久久精品在这里 | 亚洲色成人www永久在线观看 | 老妇裸体性激交老太视频 | 青青草原伊人 | 色婷婷91 | 久久性感视频 | 亚洲成年人在线 | 大尺度做爰呻吟62集 | 亚洲精品短视频 | 精品人妻一区二区三区久久夜夜嗨 | 理论片高清免费理伦片 | 久久久久看片 | 欧美自拍偷拍一区二区 | 日韩免费在线观看 | 日韩三级网 | 毛片av网址 | 手机在线看a | 五月在线视频 | 黄色片视频免费看 | 国产成人精品网 | 欲色av| 黄色片高清 | 噼里啪啦免费高清看 | 久草剧场| 国产日韩一区二区三区 | 日韩欧美一区二区三区在线观看 | 成人黄色在线网站 | 99热伊人| 香蕉视频在线看 | 啦啦啦视频在线观看 | 久久国产视频播放 | 饥渴放荡受np公车奶牛 | 三年大全国语中文版免费播放 | 三级全黄的视频 | 国产精品4区| 人妻奶水人妻系列 | 激情一区二区 | 91精品国产成人 | 亚洲精品在线观看视频 | 老太婆av | gai视频在线观看资源 | 性视频网 | 蜜臀麻豆 | 猛男被粗大男男1069 | 午夜一二区 | 日韩成人免费在线视频 | 奇米在线视频 | 国产精品呻吟久久 | 欧美网站在线观看 | 浪浪视频污 | 精品国产一区二区三区在线观看 | 日本中文一区 | 成人一二区| 久久国产乱子伦免费精品 | 色综合久久88色综合天天免费 | 黄色大片在线看 | 久久久女人 | 九九精品视频免费 | 少妇流白浆|