2015-04-22 91 views
1

你好我是新來的JavaScript,我試圖寫出一些測試網站的代碼,我有一些問題,下面的道瓊斯是我的代碼和我不斷收到這個錯誤,我不明白爲什麼。Js,document.getElementById(「ID」)。innerHTML,錯誤

TypeError: null is not an object (evaluating 'document.getElementById("h3").innerHTML = "<h3>You Are up to date!</h3>"')

這是我的第二種方法我嘗試使用。我試圖做的事情有一個版本列表,這是我的第一個版本列表,它會拉一個.js文件並建立一個表格,但那不起作用,所以我想我會試試這個,但是猜猜看是什麼發生了什麼?不工作

我現在使用的代碼如下。如果你能提供幫助,那將是驚人的。 感謝,Dakmessier

var current = "1.0"; 
function get_latest(){ 
document.getElementById("bob").innerHTML = current; 
} 

if (local != current){ 
document.getElementById("Get").innerHTML = "<button><a href=\"bla\">Get the Latest Update!</a></button>"; 
} else if (local == current){ 
document.getElementById("h3").innerHTML = "<h3>You Are up to date!</h3>"; 
} else { 
document.getElementById("h3").innerHTML = "<h3>Sorry, unable to check for update.</h3>"; 
} 
+1

有ID爲'h3'沒有元素,這是一個標記名 – adeneo

+0

以及我增加了一個ID,這是H3,但我一直與我的代碼,並已刪除該ID和我現在更新上面的代碼 – Dakmessier

+0

你已經展示了你的JavaScript,你能否展示JavaScript預期能夠工作的相關HTML? –

回答

2

document.getElementById(id)發現與價值在你的HTML給定ID的元素。值的ID如下:

<div id="myHeader">Some Content</div> 

而且,然後你可以找到與該元素:

document.getElementById("myHeader"); 

ID值必須是每個文檔中唯一的,所以應該永遠只能是給定的一個元素ID。


如果ID是不是你真正想要的,你可以找到的元素等方式,根據標籤類型,按類名,屬性等等...使用CSS選擇器與document.querySelectorAll()什麼。

例如,如果你想找到所有<h3>標籤,你可以這樣做:

var items = document.querySelectorAll("h3"); 

這裏有一些其他的原因,document.getElementById(...)可能無法找到你想要找什麼:

  1. JavaScript代碼在DOM元素被分析和加載之前運行,因此當您運行代碼時,元素實際上還沒有存在。這與從文檔<head>部分運行的代碼相同。

  2. 如何在HTML中指定id值時發生HTML錯誤。

  3. 您有一個HTML錯誤導致瀏覽器無法正確解析您的HTML。

  4. 您有一個腳本錯誤導致您的腳本在到達要運行的部分之前中止。

+0

是的,我明白,這就是我我已經去了,但我仍然得到那個錯誤 – Dakmessier

+0

@Dakmessier - 你需要向我們展示你的HTML(理想地向我們展示整個文檔)。它可能找不到所需項目的另一個原因是,如果您在加載DOM之前正在運行JavaScript(例如代碼正在文檔的「」部分中運行)。 – jfriend00

+0

所以如果我改變'

0

確實document.getElementById如果找不到指定了Id的元素,則返回null。

而且聲明:

if (local != current){ 
// .. 
} else if (local == current){ 
// .. 
} else { 
// .. 
} 

是有點奇怪。如果local != currentfalse那麼local == current必須是trueelse if (...)是多餘的,else部分將永遠不會運行。

+0

好吧,我只是讓人們下載網站使用,所以然後.js文件託管在其他地方,這是本地。文件,所以如果它找不到當前的變種,那麼將會去其他人,並說它找不到它 – Dakmessier

+0

無論如何,無法到達'else'部分。 – robbmj

0

嗨,哥們,你應該做的韌皮事情是下面的例子中,隨時將它複製您的代碼片段:

function myFunction() { 
 
    document.getElementById("demo").innerHTML = "Paragraph changed!"; 
 
}
<!DOCTYPE html> 
 
<html> 
 
<body> 
 

 
<p id="demo" onclick="myFunction()">Click me to change my HTML content (innerHTML).</p> 
 

 
</body> 
 
</html>

我將解釋這樣的回答:這是一個HTML +內聯腳本,使內部的HTML工作。至於與你的答案有關你不知道你的代碼停止在哪裏,無論如何測試我的代碼片段,並讓我知道

0

我知道這是一個古老的問題,但我有同樣的問題,並試圖找到解決方案一段時間。

問題是我在加載頁面之前執行腳本。因此無法找到我們試圖捕捉的對象。

所以要麼使用jquery document.ready函數,要麼將腳本移動到html的末尾。

我希望這有助於

相關問題