onclick和addEventListener的區(qū)別

onclick

實例

<!DOCTYPE html>
<html>
<head>
<script>
function copyText()
{
document.getElementById("field2").value=document.getElementById("field1").value;
}
</script>
</head>
<body>

Field1: <input type="text" id="field1" value="Hello World!"><br>
Field2: <input type="text" id="field2"><br><br>

<button onclick="copyText()">復制文本</button>

<p>當按鈕被單擊時觸發(fā)函數(shù)。此函數(shù)把文本從 Field1 復制到 Field2 中。</p>

</body>
</html>

定義和用法

onclick 屬性由元素上的鼠標點擊觸發(fā)。
注釋:onclick屬性不適用以下元素:<base>、<bdo>、<br>、<head>、<html>、<iframe>、<meta>、<param>、<script>、<style> 或 <title>。

語法

<element onclick="script">

屬性值

描述
script onclick 發(fā)生時運行的腳本。

addEventListener()

實例

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>菜鳥教程(runoob.com)</title>
</head>
<body>

<p>該實例使用 addEventListener() 方法來向按鈕添加點擊事件。</p>
<button id="myBtn">點我</button>
<p id="demo"></p>
<script>
document.getElementById("myBtn").addEventListener("click", function()
{
    document.getElementById("demo").innerHTML = "Hello World";
});
</script>
</body>
</html>

定義和用法

addEventListener()方法用于向指定元素添加事件句柄。
提示: 使用 removeEventListener() 方法來移除 addEventListener() 方法添加的事件句柄。

語法

element.addEventListener(event, function, useCapture)

參數(shù)值

參數(shù) 描述
event 必須。字符串,指定事件名。注意: 不要使用 "on" 前綴。 例如,使用 "click" ,而不是使用 "onclick"。 提示: 所有 HTML DOM 事件,可以查看我們完整的 HTML DOM Event 對象參考手冊
function 必須。指定要事件觸發(fā)時執(zhí)行的函數(shù)。 當事件對象會作為第一個參數(shù)傳入函數(shù)。 事件對象的類型取決于特定的事件。例如, "click" 事件屬于 MouseEvent(鼠標事件) 對象。
useCapture 可選。布爾值,指定事件是否在捕獲或冒泡階段執(zhí)行.可能值:1. true - 事件句柄在捕獲階段執(zhí)行2. false- false- 默認。事件句柄在冒泡階段執(zhí)行

區(qū)別

image

demo如下,得出結果onclick只出現(xiàn)一次alert:我是click2【很正常第一次click事件會被第二次所覆蓋】,但是addEventListener卻可以先后運行,不會被覆蓋【正如:它允許給一個事件注冊多個監(jiān)聽器。在使用DHTML庫或者 Mozilla extensions 這樣需要保證能夠和其他的庫或者差距并存的時候非常有用?!?br> 實例

<ul id="color-list">
    <li id="addEvent">red</li>
    <li id="on_click">yellow</li>
</ul>
    <script type="text/javascript">
        (function(){
            var addEvent = document.getElementById("addEvent");
                    addEvent.addEventListener("click",function(){
                        alert("我是addEvent1");
                    },false);
                    addEvent.addEventListener("click",function(){
                        alert("我是addEvent2");
                    },false);

            var addEvent = document.getElementById("on_click"); 

            on_click.onclick = function() {
                alert("我是click1");
            }
            on_click.onclick = function() {
                alert("我是click2");
            }
        })();
    </script>

運行結果:
onclick
可想而知,只會彈出一個彈出框,雖然綁定了兩次,‘我是click2’
一個click處理器在同一時間只能指向唯一的對象。因此就算對于一個對象綁定了多次,但是仍然只會出現(xiàn)最后的一次綁定。

addEventListener
兩次綁定的事件,都能夠成功運行,也就是前后彈出 ‘我是addEvent1’ '我是addEvent2'
由此可知,對于一個可以綁定的事件對象,想多次綁定事件都能運行,選用addEventListener

  1. onclick事件在同一時間只能指向唯一對象
  2. addEventListener給一個事件注冊多個listener
  3. addEventListener對任何DOM都是有效的,而onclick僅限于HTML
  4. addEventListener可以控制listener的觸發(fā)階段,(捕獲/冒泡)。對于多個相同的事件處理器,不會重復觸發(fā),不需要手動使用removeEventListener清除
  5. IE9使用attachEvent和detachEvent
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

  • ??JavaScript 與 HTML 之間的交互是通過事件實現(xiàn)的。 ??事件,就是文檔或瀏覽器窗口中發(fā)生的一些特...
    霜天曉閱讀 3,715評論 1 11
  • 以下文章為轉載,對理解JavaScript中的事件處理機制很有幫助,淺顯易懂,特分享于此。 什么是事件? 事件(E...
    jxyjxy閱讀 3,174評論 1 10
  • 第3章 基本概念 3.1 語法 3.2 關鍵字和保留字 3.3 變量 3.4 數(shù)據(jù)類型 5種簡單數(shù)據(jù)類型:Unde...
    RickCole閱讀 5,536評論 0 21
  • Dom事件 事件是一種異步編程的實現(xiàn)方式,本質上是程序各個組成部分之間的通信。DOM支持大量的事件 (一) Eve...
    woow_wu7閱讀 1,889評論 0 1
  • -1- 一天,看到一位簡書簽約作者寫的文章,因為他在簡書和公眾號上的閱讀量在不斷地減少而感到迷茫。 還在一個寫作群...
    風信子逸軒閱讀 970評論 7 9

友情鏈接更多精彩內容