JavaScript中removeEventListener()使用注意事項


最近復習JavaScript中的基礎知識,一方面給新來的實習生介紹一下JavaScript基礎知識,一方面也是自己工作一年來自己在JavaScript方面學習的總結。

 

Javascript在Web開發中地位越來越重要,所以也很多人說,JavaScript在Web開發中地位就像C語言在操作系統上的地位。目前稍微復雜的Web應用或者企業擁有,都會使用到JavaScript。

 

addEventListener(eventtarget,eventlistener,event caputring)

設計demo的需求是,頁面放置一個button。當用戶點擊button按鈕時,對button添加事件,然后在handler處理函數里面,使用removeEventListener()移除剛剛綁定的事件。

<html>
    <head>
    </head>
    <body>
        <input id="info"  type="button" value="Click Me!" />
    <script type="text/javascript">
    
        var target=document.getElementById('info');
        target.addEventListener('click',function(){
            console.log("I have been clicked!");
            
            target.removeEventListener('click',function(){
                console.log("removing the click event!");
            },false);
        },false);
        
    </script>
    </body>
</html>

 

實驗結果是,用戶點擊button時,每次都會輸出"I have been clicked!",說明removeEventListener()函數沒有起到作用。通過查找資料,得出結論。在使用removeEventListener()函數時,handler函數,必須和使用addEventListener()里面的handler函數必須相同。所以上面寫的代碼是錯誤的。修正之后的代碼應該如下:

<html>
    <head>
    </head>
    <body>
        <input id="info"  type="button" value="Click Me!" />
        <script type="text/javascript">
            //addEventListener()和removeEventListener()中handler函數必須相同,移除事件函數才有效。
            function myhandler(){
                console.log("I have been clicked!");
                document.getElementById('info').removeEventListener('click',myhandler,false);
            }
            var target=document.getElementById('info');
            target.addEventListener('click',myhandler,false);
            
        </script>
    </body>
</html>

 

參考網址:http://www.html5china.com/js/jsbase/20111124_2904.html

目前開發中大多數開發人員會使用常用一種JavaScript類庫,比如jQuery,YUI,Prototype等等,所以也不需要考慮IE瀏覽器和其他支持標准DOM事件瀏覽器在處理事件不同方法。

地圖圖片

 

(測試一下Bing地圖)


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM