2012-02-05 108 views
-3

爲什麼全局變量在該函數中不被識別?全局和本地javascript範圍

<script type="text/javascript"> 
var id_f = document.getElementById('f'); 

function foo() 
{ 
id_f.innerHTML=("text"); 
} 
</script> 
+0

你就錯了。它被認可。 – akonsu 2012-02-05 21:37:45

+0

什麼不工作? – user1096188 2012-02-05 21:37:45

+0

你的html代碼放在哪裏,你用什麼瀏覽器來測試? – skyburner 2012-02-05 21:38:55

回答

3

.getElementById()函數返回null如果沒有匹配的元素被發現,這是不是一個錯誤,但如果你的id_f變量是null它不具有.innerHTML財產,會給出錯誤。

即使頁面源代碼中存在匹配的元素,除非腳本運行該元素實際上已被解析,否則將不會找到它。因此,您的腳本需要位於源代碼元素之後的某個位置(例如,在關閉</body>標記之前),或者您需要添加onload或document.ready類型處理程序並從此處運行代碼。

(如果添加console.log(id_f)alert(id_f)你的函數開始您能得到什麼?)

+0

謝謝。這正是問題所在。我剛開始使用JavaScript,所以我很欣賞沒有居高臨下的答案。 – T110 2012-02-06 02:04:55