2013-03-18 14 views
0

我註冊與onclick屬性一個按鈕的功能,並定義在$此功能()塊(我知道這是一個不好的做法,jQuery的準備塊中定義的函數之間的區別,這是隻是一個例子),當我點擊按鈕時,會出現一個錯誤:Uncaught ReferenceError:hello沒有定義。這裏是我的代碼:就是一個外

<script src="http://code.jquery.com/jquery-1.9.1.js"></script> 
<script type="text/javascript"> 
$(function(){ 
    function hello(){ 
     alert('hello'); 
    } 
}); 
</script> 
</head> 
<body> 
<input type="button" id="btn" value="click" onclick="hello()"/> 
</body> 

如果我把問候功能碼出$()塊,它的工作原理。我知道$()在DOM被解析執行,當我點擊該按鈕,DOM必須已經被解析,那麼它爲什麼報錯? 謝謝。

+0

您的名爲'hello'的函數被傳遞給'$()'的匿名函數,因此無法從您的onclick處理程序中調用。 – jbabey 2013-03-18 13:30:37

回答

1

沒有區別,除了功能執行(未限定)內的$.ready塊被保證執行後的DOM是準備要被訪問/操縱。

你的問題是範圍的問題之一;您創建了一個本地函數,該函數在您的事件正在處理的全局範圍內不可訪問。

2

您的代碼假定你好是一個全球性的功能,它不是。

$(function(){ 
    function hello(){ 
     alert('hello'); 
    } 
    $("#btn").click(hello); 
}); 
+0

window.hello = function(){將使其成爲全局的。無論如何,內聯js糟透了 – 2013-03-18 13:32:27