簡體   English   中英

什么之間的區別<a onclick=“someFunction”>和</a>

[英]what's the difference between <a onclick=“someFunction”> and <a onclick=“someFunction()”>

有什么區別

<a onclick="someFunction">

<a onclick="someFunction()">

一個使用括號而不是另一個,但使用兩者的區別是什么? 什么是“正確”的選擇? 如果我不使用任何href屬性會發生什么?

據我所知,在javascript中,使用something = someFunc(); 將該函數的返回值賦給something變量。 並使用something = someFunc; 直接將函數(不是它的結果)賦給該變量(它主要用於為事件分配函數)。 例如,我可以為onclick事件分配一個函數。

但我不明白的是,在一些html元素內聯事件中使用時會發生什么,如示例中所示,因為賦值不是javascript變量,而是html屬性,這恰好是一個事件? 請解釋。

而且,將一個內聯onclick函數分配給一個錨點( a )與其他元素(例如span div label等)有什么不同? 他們有同樣的效果嗎?

旁注:我一直在這里閱讀關於如何在點擊鏈接時運行一個函數,我已經明白是應該“內聯”,而是使用不引人注目的javascript。 (我提到它是為了避免對此進行辯論),但在我看到的例子中,我沒有提到我在內聯時提到的兩個選項的區別。

編輯:這個問題是因為在這里他們給出了一個答案,它沒有在事件的函數中使用括號,沒有人提到需要括號,所以我認為它是有效的。 但我不知道使用()或不()什么區別。

一個使用括號而不是另一個,但使用兩者的區別是什么?

<a onclick="someFunction">不會做任何事情。 括號使得函數被調用

擁有一個只包含標識符(無論是函數名,變量還是其他)的語句都不會執行任何操作(如果變量不存在則拋出引用錯誤除外)。

如果我不使用任何href屬性會發生什么?

然后我會問你為什么首先使用<a>元素。

而且,將一個內聯onclick函數分配給一個錨點(a)與其他元素(例如span div標簽等)有什么不同?

只有它們(默認情況下)不是可聚焦元素(也不是沒有href屬性的元素),因此無法通過Tab鍵到元素並按Enter鍵來觸發click事件。 如果你想要一個在觸發時會對JS做一些事情的元素,並且你沒有一個明智的回退,當JS不可用時,使用一個按鈕。

事件處理程序屬性的值是一系列Javascript 語句 ,而不是表達式。

它沒有為屬性賦值函數; 它是在該事件中執行的一段代碼。
省略括號,會產生一個無效的表達式語句。

當在單擊函數上內聯編寫時,我們在單擊元素時分配要以字符串形式執行的代碼。

它相當於eval('someFunction()'); 我們不能寫click ='someFunction',因為它等同於eval('someFunction'),它什么也不做。 如果您打算將單擊處理程序綁定到錨標記,請不要忘記在錨標記中添加href ='#'屬性。

與錨標記相比,將單擊處理程序分配給span或divs沒有區別。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM