欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

js中事件綁定addEventListener()和attachEvent()的區(qū)別

 更新時(shí)間:2025年05月22日 10:05:55   作者:十二啊  
本文主要介紹了js中事件綁定addEventListener()和attachEvent()的區(qū)別,前者支持多函數(shù)綁定且順序執(zhí)行,后者IE兼容但順序相反,下面就來詳細(xì)的介紹一下,感興趣的可以了解一下

JavaScript-DOM-事件綁定

當(dāng)我們?yōu)樵亟壎ㄒ粋€(gè)單擊事件時(shí),通常會(huì)想到element.οnclick=function(){},但是要綁定多個(gè)單擊函數(shù)時(shí)卻會(huì)失效,并且會(huì)被最新的響應(yīng)函數(shù)覆蓋。所以就有了addEventListener()方法,但是IE8及以下不支持。

addEventListener()

該方法可以同時(shí)為一個(gè)元素的相同事件同時(shí)綁定多個(gè)響應(yīng)函數(shù),這樣當(dāng)事件觸發(fā)時(shí),響應(yīng)函數(shù)將會(huì)按照函數(shù)的綁定順序執(zhí)行。有三個(gè)參數(shù)表示內(nèi)容如下:

  • 事件的字符串,不要on如:click而不是onclick。
  • 回調(diào)函數(shù),當(dāng)事件觸發(fā)時(shí)該函數(shù)被調(diào)用。
  • 是否在捕獲階段觸發(fā)事件,需要一個(gè)布爾值,true表示在捕獲階段觸發(fā),false則相反。一般都為false。

attachEvent()

IE8及以下不支持addEventListener(),可以通過attachEvent()為一個(gè)元素的相同事件同時(shí)綁定多個(gè)響應(yīng)函數(shù)。但是事件觸發(fā)時(shí),響應(yīng)函數(shù)將會(huì)后綁定先執(zhí)行,與addEventListener()相反,用法相似,有兩個(gè)參數(shù):

  • 事件的字符串,要on 如:onclick而不是click
  • 回調(diào)函數(shù),當(dāng)事件觸發(fā)時(shí)該函數(shù)被調(diào)用

注意

需要注意的是addEventListener()中的this是綁定事件的對(duì)象,attachEvent()中的this是window對(duì)象,this是誰(shuí)是由調(diào)用方式?jīng)Q定的。call()、apply()、bind()都可以用來重定義this對(duì)象對(duì)于三種方法可以參考這篇講解:JavaScript 中 call()、apply()、bind() 的用法。那對(duì)于瀏覽器調(diào)用的this我們不可修改,可以在匿名函數(shù)中調(diào)用回調(diào)函數(shù),拿回修改權(quán)力。迂回修改!

示例

通過為按鈕單擊事件綁定多個(gè)響應(yīng)函數(shù)的例子來試一試以上方法。

<!DOCTYPE html>
<html>

<head>
    <meta charset="utf-8">
    <title>DOM-事件綁定示例</title>
    <script>
        window.onload = function () {
            let btn = document.getElementsByTagName('button')[0];
            /*
             * 綁定函數(shù)
             * 參數(shù):
             *  obj: 要綁定事件的對(duì)象
             *  enentStr:事件的字符串(不要on)
             *  callback:回調(diào)函數(shù)
             */
            function bind(obj, enentStr, callback) {
            	// 兼容判斷
                if (obj.addEventListener) {
                    // 大部分瀏覽器兼容
                    obj.addEventListener(enentStr, callback, false);
                } else {
                    // IE8以下,事件名需要on
                    obj.attachEvent('on' + enentStr, function () {
                        // 瀏覽器調(diào)用不可修改,在匿名函數(shù)中調(diào)用回調(diào)函數(shù),拿回修改權(quán)力
                        callback.call(obj);
                    });
                }
            }
            // 調(diào)用綁定函數(shù)
            bind(btn, 'click', function () {
                alert(this);
            })
            bind(btn, 'click', function () {
                alert('hello 啊');
            })
        }
    </script>
</head>

<body>
    <button>點(diǎn)我</button>
</body>

</html>

到此這篇關(guān)于js中事件綁定addEventListener()和attachEvent()的區(qū)別的文章就介紹到這了,更多相關(guān)addEventListener()和attachEvent()區(qū)別內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家! 

相關(guān)文章

  • 瀏覽器復(fù)制插件zeroclipboard使用指南

    瀏覽器復(fù)制插件zeroclipboard使用指南

    ZeroClipboard 是國(guó)外大神開發(fā)的一個(gè)用于剪貼板復(fù)制的 JS 插件,它是基于 Flash 來實(shí)現(xiàn)跨瀏覽器的復(fù)制功能的。當(dāng)我們使用 ZeroClipboard 的時(shí)候,它會(huì)悄悄隱藏一個(gè)小小的 Flash 影片(swf),不會(huì)對(duì)我們的用戶界面造成影響。我們只需要借助它實(shí)現(xiàn)復(fù)制功能就行了。
    2016-03-03
  • 不使用ajax實(shí)現(xiàn)無(wú)刷新提交表單

    不使用ajax實(shí)現(xiàn)無(wú)刷新提交表單

    這篇文章主要介紹了不使用ajax實(shí)現(xiàn)無(wú)刷新提交表單的方法,需要的朋友可以參考下
    2014-12-12
  • Bootstrap入門教程一Hello Bootstrap初識(shí)

    Bootstrap入門教程一Hello Bootstrap初識(shí)

    Bootstrap,來自 Twitter,是目前很受歡迎的前端框架。Bootstrap是基于 HTML5、CSS3和Javascriopt開發(fā)的。這篇文章主要介紹了基于Bootstrap3實(shí)現(xiàn)漂亮簡(jiǎn)潔的CSS3價(jià)格表(精美代碼版),需要的朋友可以參考下
    2017-03-03
  • JavaScript實(shí)現(xiàn)數(shù)組降維詳解

    JavaScript實(shí)現(xiàn)數(shù)組降維詳解

    大家都知道將多維數(shù)組(尤其是二維數(shù)組)轉(zhuǎn)化為一維數(shù)組是業(yè)務(wù)開發(fā)中的常用邏輯,除了使用樸素的循環(huán)轉(zhuǎn)換以外,我們還可以利用Javascript的語(yǔ)言特性和數(shù)據(jù)結(jié)構(gòu)的思想實(shí)現(xiàn)更為簡(jiǎn)潔優(yōu)雅的轉(zhuǎn)換。下面跟著小編一起來學(xué)習(xí)學(xué)習(xí)關(guān)于JavaScript如何實(shí)現(xiàn)數(shù)組降維吧。
    2017-01-01
  • javascript面向?qū)ο蟪绦蛟O(shè)計(jì)實(shí)踐常用知識(shí)點(diǎn)總結(jié)

    javascript面向?qū)ο蟪绦蛟O(shè)計(jì)實(shí)踐常用知識(shí)點(diǎn)總結(jié)

    這篇文章主要介紹了javascript面向?qū)ο蟪绦蛟O(shè)計(jì)實(shí)踐常用知識(shí)點(diǎn),結(jié)合實(shí)例形式總結(jié)分析了javascript面向?qū)ο蟪绦蛟O(shè)計(jì)中原型引用類型、屬性、方法相關(guān)操作技巧與注意事項(xiàng),需要的朋友可以參考下
    2019-07-07
  • javascript跟隨滾動(dòng)效果插件代碼(javascript Follow Plugin)

    javascript跟隨滾動(dòng)效果插件代碼(javascript Follow Plugin)

    這篇文章介紹了javascript跟隨滾動(dòng)效果插件代碼(javascript Follow Plugin),有需要的朋友可以參考一下
    2013-08-08
  • 淺談JS中的bind方法與函數(shù)柯里化

    淺談JS中的bind方法與函數(shù)柯里化

    下面小編就為大家?guī)硪黄獪\談JS中的bind方法與函數(shù)柯里化。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2016-08-08
  • uni-app登錄與支付功能實(shí)現(xiàn)三秒后自動(dòng)跳轉(zhuǎn)

    uni-app登錄與支付功能實(shí)現(xiàn)三秒后自動(dòng)跳轉(zhuǎn)

    這篇文章主要介紹了uni-app:登錄與支付-- 三秒后自動(dòng)跳轉(zhuǎn),本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2023-03-03
  • 淺談HBuilderX開發(fā)小程序的一些問題

    淺談HBuilderX開發(fā)小程序的一些問題

    本文主要介紹了HBuilderX開發(fā)小程序的一些問題,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-02-02
  • 原生JavaScript實(shí)現(xiàn)網(wǎng)頁(yè)版計(jì)算器

    原生JavaScript實(shí)現(xiàn)網(wǎng)頁(yè)版計(jì)算器

    這篇文章主要為大家詳細(xì)介紹了原生JavaScript實(shí)現(xiàn)網(wǎng)頁(yè)版計(jì)算器,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-11-11

最新評(píng)論