# [JavaScript] 宣告事件的三種方式 ###### tags: `JavaScript` 一般在撰寫事件時,會有三種方式,第一種也是較為早期的一種,也是不推薦使用的方式,因為較容易受到外來的攻擊,關鍵是在 onclick="hello();" 在這裡面可以撰寫 JS,所以也較容易受到外來的方式改寫程式碼,也是較為危險的方式 ``` <input type="button" class="btn" value="點擊" onclick="hello();"> ``` 而第二種,這種方式是直接把我們的事件全部寫在 JS 檔內,而不是 HTML 內 ``` var el = document.querySelector('.btn'); el.onclick = function(){ alert('Hello'); } ``` 而第三種,採用 .addEventListener() 這個方法,俗稱事件監聽,來做事件的綁定 ``` var el = document.querySelector('.btn'); el.addEventListener('click',function(){ alert('Hello'); }) ``` ### 比較後兩者差異 撇除掉第一種較危險的方式之外,來談談第二種跟第三種的差異性 究竟這兩個方法差異性在哪裡?假設我們今天同一個元素要綁定多個事件時:當採用第一種方法 ``` <script> var el = document.querySelector('.btn'); el.onclick = function(){ alert('Hello1'); } el.onclick = function(){ alert('Hello2'); } </script> ``` 這時候只會彈跳 Hello2 出來,第一個 click 事件被蓋掉了,而使用另外一種方法時: ``` <script> var el = document.querySelector('.btn'); el.addEventListener('click',function(){ alert('Hello1'); } }) el.addEventListener('click',function(){ alert('Hello2'); } }) </script> ``` 這時候會發現,會依序彈跳 Hello1 Hello2,事件會依序出來,並不會被蓋掉 上述就是其差異性,所以為了避免這種狀況,我們可以試著改採用 .addEventListener()
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up