js HTML DOM EventListener功能與用法實(shí)例分析
本文實(shí)例講述了js HTML DOM EventListener功能與用法。分享給大家供大家參考,具體如下:
DOM EventListener用于向指定元素添加事件句柄。
在用戶點(diǎn)擊按鈕時(shí)觸發(fā)監(jiān)聽(tīng)事件:
document.getElementById(’myBtn’).addEventListener(’click’, displayDate);
addEventListener() 方法添加的事件句柄不會(huì)覆蓋已存在的事件句柄。
可以向一個(gè)元素添加多個(gè)事件句柄。
<script>var x = document.getElementById('myBtn');x.addEventListener('mouseover', myFunction);x.addEventListener('click', mySecondFunction);x.addEventListener('mouseout', myThirdFunction);function myFunction() { document.getElementById('demo').innerHTML += 'Moused over!<br>'}function mySecondFunction() { document.getElementById('demo').innerHTML += 'Clicked!<br>'}function myThirdFunction() { document.getElementById('demo').innerHTML += 'Moused out!<br>'}</script>
可以向同個(gè)元素添加多個(gè)同類型的事件句柄,如:兩個(gè) 'click' 事件。
<script>var x = document.getElementById('myBtn');x.addEventListener('click', myFunction);x.addEventListener('click', someOtherFunction);function myFunction() { alert ('Hello World!')}function someOtherFunction() { alert ('函數(shù)已執(zhí)行!')}</script>
可以向任何 DOM 對(duì)象添加事件監(jiān)聽(tīng),不僅僅是 HTML 元素。如: window 對(duì)象。
addEventListener() 方法允許你在 HTML DOM 對(duì)象添加事件監(jiān)聽(tīng), HTML DOM 對(duì)象如: HTML 元素, HTML 文檔, window 對(duì)象。或者其他支出的事件對(duì)象如: xmlHttpRequest 對(duì)象
<script>window.addEventListener('resize', function(){ document.getElementById('demo').innerHTML = Math.random();});</script>
addEventListener() 方法可以更簡(jiǎn)單的控制事件(冒泡與捕獲)。
當(dāng)使用 addEventListener() 方法時(shí), JavaScript 從 HTML 標(biāo)記中分離開(kāi)來(lái),可讀性更強(qiáng), 在沒(méi)有控制HTML標(biāo)記時(shí)也可以添加事件監(jiān)聽(tīng)。
可以使用 removeEventListener() 方法來(lái)移除事件的監(jiān)聽(tīng)。
語(yǔ)法element.addEventListener(event, function, useCapture); 第一個(gè)參數(shù)是事件的類型 (如 'click' 或 'mousedown'). 第二個(gè)參數(shù)是事件觸發(fā)后調(diào)用的函數(shù)。 第三個(gè)參數(shù)是個(gè)布爾值用于描述事件是冒泡還是捕獲。該參數(shù)是可選的。
注意:不要使用 'on' 前綴。 例如,使用 'click' ,而不是使用 'onclick'。
事件冒泡或事件捕獲?事件傳遞有兩種方式:冒泡與捕獲。
事件傳遞定義了元素事件觸發(fā)的順序。 如果你將 <p> 元素插入到 <div> 元素中,用戶點(diǎn)擊 <p> 元素, 哪個(gè)元素的 'click' 事件先被觸發(fā)呢?
在 冒泡 中,內(nèi)部元素的事件會(huì)先被觸發(fā),然后再觸發(fā)外部元素,即: <p> 元素的點(diǎn)擊事件先觸發(fā),然后會(huì)觸發(fā) <div> 元素的點(diǎn)擊事件。
在 捕獲 中,外部元素的事件會(huì)先被觸發(fā),然后才會(huì)觸發(fā)內(nèi)部元素的事件,即: <div> 元素的點(diǎn)擊事件先觸發(fā) ,然后再觸發(fā) <p> 元素的點(diǎn)擊事件。
addEventListener() 方法可以指定 'useCapture' 參數(shù)來(lái)設(shè)置傳遞類型:
addEventListener(event, function, useCapture);
默認(rèn)值為 false, 即冒泡傳遞,當(dāng)值為 true 時(shí), 事件使用捕獲傳遞。
<script>document.getElementById('myP').addEventListener('click', function() { alert('你點(diǎn)擊了 P 元素!');}, false);document.getElementById('myDiv').addEventListener('click', function() { alert(' 你點(diǎn)擊了 DIV 元素 !');}, false);document.getElementById('myP2').addEventListener('click', function() { alert('你點(diǎn)擊了 P2 元素!');}, true);document.getElementById('myDiv2').addEventListener('click', function() { alert('你點(diǎn)擊了 DIV2 元素 !');}, true);</script>removeEventListener() 方法
removeEventListener() 方法移除由 addEventListener() 方法添加的事件句柄:
<script>document.getElementById('myDIV').addEventListener('mousemove', myFunction);function myFunction() { document.getElementById('demo').innerHTML = Math.random();}function removeHandler() { document.getElementById('myDIV').removeEventListener('mousemove', myFunction);}</script>瀏覽器支持
表格中的數(shù)字表示支持該方法的第一個(gè)瀏覽器的版本號(hào)。
方法
addEventListener() 1.0 9.0 1.0 1.0 7.0 removeEventListener() 1.0 9.0 1.0 1.0 7.0
注意: IE 8 及更早 IE 版本,Opera 7.0及其更早版本不支持 addEventListener() 和 removeEventListener() 方法。但是,對(duì)于這類瀏覽器版本可以使用 detachEvent() 方法來(lái)移除事件句柄:
element.attachEvent(event, function);element.detachEvent(event, function);
例:該實(shí)例演示了所有瀏覽器兼容的解決方法
<script>var x = document.getElementById('myBtn');if (x.addEventListener) { x.addEventListener('click', myFunction);} else if (x.attachEvent) { x.attachEvent('onclick', myFunction);}function myFunction() { alert('Hello World!');}</script>
感興趣的朋友可以使用在線HTML/CSS/JavaScript代碼運(yùn)行工具:http://tools.jb51.net/code/HtmlJsRun測(cè)試上述代碼運(yùn)行效果。
更多關(guān)于JavaScript相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《JavaScript操作DOM技巧總結(jié)》、《JavaScript頁(yè)面元素操作技巧總結(jié)》、《JavaScript事件相關(guān)操作與技巧大全》、《JavaScript查找算法技巧總結(jié)》、《JavaScript數(shù)據(jù)結(jié)構(gòu)與算法技巧總結(jié)》、《JavaScript遍歷算法與技巧總結(jié)》及《JavaScript錯(cuò)誤與調(diào)試技巧總結(jié)》
希望本文所述對(duì)大家JavaScript程序設(shè)計(jì)有所幫助。
相關(guān)文章:
1. python如何實(shí)現(xiàn)word批量轉(zhuǎn)HTML2. python excel和yaml文件的讀取封裝3. python3實(shí)現(xiàn)往mysql中插入datetime類型的數(shù)據(jù)4. python爬蟲(chóng)實(shí)戰(zhàn)之制作屬于自己的一個(gè)IP代理模塊5. moment轉(zhuǎn)化時(shí)間戳出現(xiàn)Invalid Date的問(wèn)題及解決6. Android中的緩存7. 關(guān)于 Android WebView 的內(nèi)存泄露問(wèn)題8. java——Byte類/包裝類的使用說(shuō)明9. Python中內(nèi)建模塊collections如何使用10. Spring boot整合連接池實(shí)現(xiàn)過(guò)程圖解
