onclick與click事件的區別
看到經常有朋友問,onclick事件與click事件有什麼區別。
此種情況基本是出現在初學者身上,當年作者本人也有類似的疑問。
其實這是一個非常搞笑的問題,世上本沒有onclick事件。
但是總有人如此稱呼,並且聽起來很順耳,沒有任何違和感。
比如還有change事件被稱作為onchange事件,keydow事件被稱作為onkeydow事件。
以此類推,幾乎所有的事件的名稱前面都被新增了一個"on",準確的說,事件的名稱新增on是錯誤的。
之所以經常出現上述稱謂,主要是因為早前註冊事件處理函式方式引起的。
程式碼例項如下:
[HTML] 純文字檢視 複製程式碼執行程式碼<!doctype html> <html> <head> <meta charset="utf-8"> <meta name="author" content="http://www.softwhy.com/" /> <title>螞蟻部落</title> <script> window.onload=function(){ let obt=document.querySelector("#bt"); let odiv=document.querySelector("#show"); let count=0; obt.onclick=function(){ odiv.innerHTML=++count; } } </script> </head> <body> <input type="button" id="bt" value="檢視演示"/> <div id="show"></div> </body> </html>
程式碼核心截圖如下:
看到這裡,可以想到稱呼click事件為onclick事件似乎也理所當然。
再看一種比較古老的註冊事件處理函式的方式:
[HTML] 純文字檢視 複製程式碼執行程式碼<!doctype html> <html> <head> <meta charset="utf-8"> <meta name="author" content="http://www.softwhy.com/" /> <title>螞蟻部落</title> <script> let count=0; function func(){ let odiv=document.querySelector("#show"); odiv.innerHTML=++count; } </script> </head> <body> <input type="button" onclick="func()" value="檢視演示"/> <div id="show"></div> </body> </html>
直接通過HTML標籤屬性方式註冊事件處理函式,又一次加強了"onclick"這個名字的正確性。
需要特別說明的是,上面方式各個瀏覽器都支援,使用起來也很方便,但最不推薦使用。
主要原因如下:
(1).讓HTML程式碼看起來更加繁瑣,違背表現與內容分離原則。
(2).不利於程式碼的後期維護。
通過ES5新增的addEventListener方法註冊事件處理函式,還原了事件的本來該有的名稱。
程式碼例項如下:
[HTML] 純文字檢視 複製程式碼執行程式碼<!doctype html> <html> <head> <meta charset="utf-8"> <meta name="author" content="http://www.softwhy.com/" /> <title>螞蟻部落</title> <script> window.onload=function(){ let obt=document.querySelector("#bt"); let odiv=document.querySelector("#show"); let count=0; function func(){ odiv.innerHTML=++count; } obt.addEventListener("click",func,false); } </script> </head> <body> <input type="button" id="bt" value="檢視演示"/> <div id="show"></div> </body> </html>
可以看到事件名稱前面已經沒有了"on",加"on"是錯誤的。
介紹到這裡,大家應該很清楚onclick與click之間的區別與聯絡了。
更多註冊事件處理函式方式參閱JavaScript 註冊事件處理函式一章節。
相關文章
- touch事件與click事件區別事件
- onclick="return check()" 和 onclick="check()" 區別
- 如何解決 touchstart 事件與 click 事件的衝突事件
- 遨翔在知識的海洋裡----(onclick和jquery,click)jQuery
- click事件生成事件
- JavaScript click 事件JavaScript事件
- loadend 與 load 事件區別事件
- input與change事件區別事件
- 事件風暴EventStorming與事件建模EventModeling的區別 | rafalmaciag事件ORMMac
- 安卓觸控事件與單擊事件的區別安卓事件
- click事件形成的條件 – Eric事件
- React事件與普通HTML事件有什麼區別React事件HTML
- touch事件和click事件多次觸發的問題事件
- 【.NET】多執行緒:自動重置事件與手動重置事件的區別執行緒事件
- 動態生成的html元素繫結click事件HTML事件
- Vue根據條件新增click事件Vue事件
- 雙擊事件(dblclick)時,不觸發單擊事件(click)事件
- a標籤href與onclick之間的碰撞
- js堅持不懈之17:onmousedown、onmouseup 以及 onclick 事件JS事件
- click事件在蘋果手機失效的問題事件蘋果
- ??與?:的區別
- 瀏覽器與Node的事件迴圈(Event Loop)有何區別?瀏覽器事件OOP
- svg click事件失效(僅限edge瀏覽器)SVG事件瀏覽器
- iOS下瀏覽器document/body的click事件無效的坑iOS瀏覽器事件
- Filter 與 Servlet 的區別FilterServlet
- session與cookie的區別SessionCookie
- @Valid 與 @Validated 的區別
- Eureka與Zookeeper的區別
- async與defer的區別
- print 與 println 的區別
- buffer與cache的區別
- grid 與 treelist 的區別
- Python中 ‘==‘ 與‘is‘的區別Python
- http與https的區別HTTP
- GET 與 POST 的區別
- TCP與UDP的區別TCPUDP
- int與Integer的區別
- Mysql與mongodb的區別MySqlMongoDB