2015-02-05 20 views
-1

喜的問題我'STIL學習JavaScript中,我試圖流動的例子的基礎:我在JavaScript的

<!DOCTYPE HTML> 
 

 
<html> 
 
<head> 
 
    <title>Untitled</title> 
 
    <meta http-equiv="content-type" content="text/html; charset=utf-8"> 
 

 
</head> 
 

 
<body> 
 
    <script type="text/javascript"> 
 
      function name(){ 
 
       alert('ffff') 
 
      } 
 
    </script> 
 

 
    <form action="#" method="post"> 
 
     <input type="text" onclick="name()" /> 
 
    </form> 
 
</body> 
 
</html>

當我運行它沒有happned,我試過其他事件,如ondblclick onmouseup ...但沒有什麼我也試過這在許多瀏覽器,但stil什麼都沒有..我做錯了什麼?謝謝並對不起英文不好

+0

JavaScript的現代瀏覽器是相當挑剔的,有時(即不是所有的時間),所以你沒有','你的警報後,先試用它,看看它是否工作。 – 2015-02-05 14:09:59

+0

在問你之前,先看看這裏。 http://www.w3schools.com/js/default.asp – Mardzis 2015-02-05 14:12:08

+1

@Mardzis - 爲什麼?它沒有解釋這個問題,並且通常很糟糕。 – Quentin 2015-02-05 14:13:27

回答

4

您正在遇到使用內在事件屬性時發生的奇怪範圍界面交互。

當你調用name(),作用域規則找到輸入元素的name財產他們發現全球name變量牽着你的函數之前。 name屬性包含一個字符串或者是未定義的(因此當您嘗試將它視爲函數時會出現錯誤)。

請勿使用內部事件屬性。使用JavaScript綁定您的事件處理程序。

function name(event) { 
 
    alert('ffff'); 
 
} 
 

 
document.querySelector('input').addEventListener('click', name);
<form action="#" method="post"> 
 
    <input type="text" /> 
 
</form>

+0

或者只是改變功能名稱... – skobaljic 2015-02-05 14:14:22

+0

是的,我忘了!這是問題謝謝你:) – 2015-02-05 14:15:40

+0

你應該總是給你的輸入一個ID和名稱屬性。如果有多個輸入,您的解決方案會將其添加到頁面上的每個文本輸入中。除非你將它應用於大量的elemenets,否則添加一個EventListener是不夠的,而不僅僅是一個。按照skobaljic的建議更改函數的名稱。 – 2015-02-05 14:20:42