2013-04-14 99 views
0

使用的document.getElementById()當我嘗試這在全球範圍內:無法在全球範圍內

document.getElementById("p1").innerHTML ="Howdy mate"; 

它不起作用,螢火報告錯誤:

TypeError: document.getElementById is null 

但相同的指令在功能內運作良好:

function sayHello(){ 
    document.getElementById("p1").innerHTML ="Howdy mate"; 
} 

我還沒有找到任何文獻來解釋這種行爲。誰能幫忙?

編輯:@All,正確的錯誤消息是

document.getElementById("p1") is null

Window.getElementById("p1") is not a function

如前所述。我已糾正。

+0

你可以jsfiddle部分代碼? – monkeyinsight

+0

這不是一個項目。我正在學習JavaScript,所以只需在我的「遊樂場」javascript \ html文檔上嘗試不同的說明。所以我猜'document.getElementById()'不需要在一些本地範圍內工作? –

+2

我懷疑你不小心在'document'和'getElementById'之間用逗號代替了一個點。這是一個現實的錯誤,並匹配錯誤消息(另一個選項是,你已經覆蓋了'document'變量,這是不太可能的)。 –

回答

3

可能是你打電話給document.getElementById("p1").innerHTML ="Howdy mate"; 元素加載之前?

http://jsbin.com/abejiz/1/edit VS http://jsbin.com/abejiz/2/edit

+0

嗯,這是可能的。我的腳本代碼實際上是在外部文件中,並加載了'

0

@All,我下面@ user2264587的答案訂正我的代碼。問題在於我將我的JavaScript代碼加載到文檔的<head>標記中,而<p>元素與id="p1"位於<body>中。因此,在加載<p>元素之前,JavaScript指令實際上正在執行。現在我已經把代碼中<body><p>後:

<body> 
... 
<p id="p1"><p> 
<script> 
     document.getElementById("p1").innerHTML ="Howdy mate"; 
</script> 

</body> 

它工作正常。