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

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

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

JavaScript-DOM-事件綁定

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

addEventListener()

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

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

attachEvent()

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

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

注意

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

示例

通過為按鈕單擊事件綁定多個響應(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: 要綁定事件的對象
             *  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>點我</button>
</body>

</html>

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

相關(guān)文章

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

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

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

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

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

    Bootstrap入門教程一Hello Bootstrap初識

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

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

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

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

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

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

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

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

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

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

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

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

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

    原生JavaScript實現(xiàn)網(wǎng)頁版計算器

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

最新評論