簡體   English   中英

按鈕上的Click事件似乎未觸發

[英]Click event on button doesn't seem to fire

盡管我不經常使用HTML或JavaScript,但我並不陌生。 但是,我對PHP還是很陌生,並且在嘗試獲取嵌入在PHP中的HTML中的按鈕上的click事件時,當前面臨一個奇怪的問題:

 <!DOCTYPE html> <html lang="de"> <head> <title>Blah</title> <meta charset="utf-8"> </head> <body> <button type="button" onclick="function() { alert('Moo!'); }">Some button</button> </body> </html> 

當我單擊按鈕時,什么也沒有發生。 是的,原件中當然會有更多標記,但這與我的問題無關。 W3C標記驗證服務表示沒有錯誤,並且當我從body標簽底部的腳本中警告moo時,它也可以正常工作。 看來click事件沒有觸發...知道為什么嗎?

這是因為您定義了一個函數而不執行它。 不要將其包裝在函數中。

onclick="alert('Moo!');"

如果將其包裝在函數中。 您將需要執行它。

onclick="(function() { alert('Moo!'); })()"

問題是您的匿名函數語法。 您正在使用函數定義,但沒有立即調用它或給它命名,因此瀏覽器與它沒有任何關系。

如果您希望單擊后立即調用它,則可以嘗試重寫按鈕部分,如下所示:

<button type="button" onclick="(function() { alert('Moo!'); })();">Some button</button>

但我個人的喜好是將其寫入命名函數,然后將其稱為處理程序。

內聯事件處理程序中不能包含匿名函數-使用alert("Moo")

 <!DOCTYPE html> <html lang="de"> <head> <title>Blah</title> <meta charset="utf-8"> </head> <body> <button type="button" onclick="alert('Moo!')">Some button</button> </body> </html> 

您還可以使用命名函數:

 function moo() { alert("Moo!"); } 
 <!DOCTYPE html> <html lang="de"> <head> <title>Blah</title> <meta charset="utf-8"> </head> <body> <button type="button" onclick="moo()">Some button</button> </body> </html> 

甚至是IIFE:

 <!DOCTYPE html> <html lang="de"> <head> <title>Blah</title> <meta charset="utf-8"> </head> <body> <button type="button" onclick="(function() { alert('Moo!'); })()">Some button</button> </body> </html> 

您可以通過3種方式在onclick屬性中綁定動作:

  1. <button type="button" onclick="alert('Moo!');">Some button</button>
  2. 用JS代碼創建函數。 <button type="button" onclick="someFunc()">Some button</button>
  3. 使用閉包<button type="button" onclick="(function() { alert('Moo!'); })()">Some button</button>

`

暫無
暫無

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

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