JavaScript_宣告事件的三種方式

一般在撰寫事件有三種方式,第一種也是較為早期的一種,也是不推薦使用的方式,因為較容易受到外來的攻擊,關鍵是在 onclick=“hello();” 在這裡面可以撰寫 JS,所以也較容易受到外來的方式改寫程式碼,也是較為危險的方式

第一種
1
<input type="button" class="btn" value="點擊" onclick="hello();">
第二種

直接把事件內容全寫在 JS 檔內,而不是 HTML 內

1
2
3
4
5

var el = document.querySelector('.btn');
el.onclick = function(){
alert('Hello');
}
第三種

採用addEventListener() 方法,俗稱事件監聽,來做事件的綁定

1
2
3
4
5

var el = document.querySelector('.btn');
el.addEventListener('click',function(){
alert('Hello');
})

比較彼此差異

撇除掉第一種較危險的方式之外,來談談第二種跟第三種的差異性
這兩個方法差異性在哪裡?假設我們今天同一個元素要綁定多個事件時:當採用第一種方法

1
2
3
4
5
6
7
8
9
10

<script>
var el = document.querySelector('.btn');
el.onclick = function(){
alert('Hello1');
}
el.onclick = function(){
alert('Hello2');
}
</script>

這時候只會彈跳 Hello2 出來,第一個 click 事件被蓋掉了,而使用另外一種方法時

1
2
3
4
5
6
7
8
9
10
11
12

<script>
var el = document.querySelector('.btn');
el.addEventListener('click',function(){
alert('Hello1');
}
})
el.addEventListener('click',function(){
alert('Hello2');
}
})
</script>

這時候會發現,會依序彈跳 Hello1 Hello2,事件會依序出來,並不會被蓋掉
上述就是其差異性,為了避免這種狀況,建議之後可以改用 .addEventListener()的方式