2017-07-02 49 views
2
<!DOCTYPE html> 
<html> 

<head> 
    <script> 
     document.getElementById("passage").innerHTML = "Paragraph changed!"; 
    </script> 
</head> 

<body> 

    <div id="passage">hello</div> 
    <div id="question"></div> 
    <div id="answers"></div> 

</body> 

</html> 

爲什麼document.getElementById("passage").innerHTML = "Paragraph changed!"不適用於我?我只是最後一個空白的屏幕,甚至沒有原來的「你好」。加載元素之前Javascript innerhtml不能在div

回答

5

你的腳本調用,試裝元素

<!DOCTYPE html> 
<html> 
    <head> 
    </head> 
    <body> 
     <div id="passage">hello</div> 
     <div id="question"></div> 
     <div id="answers"></div> 
     <script> 
     document.getElementById("passage").innerHTML = "Paragraph changed!"; 
     </script> 
    </body> 
</html> 
+0

我看到,現在的工作!謝謝。 –

+0

@SrinivasML請嘗試刪除代碼塊中的多餘空格。僅供參考,您也可以將其作爲一個片段。 –

-2

加載元素之前,你的腳本調用後調用腳本。

嘗試

$(document).ready(function() 
{ 
    document.getElementById("passage").innerHTML = "Paragraph changed!"; 
    }); 

JS:

(function(){ 
document.getElementById("passage").innerHTML = "Paragraph changed!"; 
}) 
+1

爲什麼它被投票? – techhunter

+0

出於最佳實踐原因,您最好將代碼放在文檔底部。另外,問題中從未提及過jQuery。 –

+1

我沒有得到你的第一點。關於第二點,我發佈了jquery和js。 – techhunter

3

如果您檢查控制檯,你可以看到一個錯誤

Uncaught TypeError: Cannot set property 'innerHTML' of null

這是HTML頁面解析和執行自上而下。

因此,它不能識別你提到的元素是什麼。

所以,您應該使用一個事件偵聽或只是身體標記結束前把腳本

方法1事件監聽器

<!DOCTYPE html> 
 
<html> 
 
<head> 
 
</head> 
 
<script> 
 
window.onload=function(){ 
 
    document.getElementById("passage").innerHTML = "Paragraph changed!"; 
 
}; 
 
</script> 
 
<body> 
 

 
<div id = "passage">hello</div> 
 
<div id = "question"></div> 
 
<div id = "answers"></div> 
 

 
</body> 
 
</html>

方法2:腳本只是以上身體標記

<!DOCTYPE html> 
 
<html> 
 
<head> 
 
</head> 
 

 
<body> 
 

 
<div id = "passage">hello</div> 
 
<div id = "question"></div> 
 
<div id = "answers"></div> 
 
<script> 
 
document.getElementById("passage").innerHTML = "Paragraph changed!"; 
 
</script> 
 
</body> 
 
</html>

1

您應該在頁面加載後執行腳本。
否則,當您引用它們時,頁面的所有元素都可能不會附加到dom。

您可以使用 設計爲在完全加載dom後執行的事件,而不是在可能容易出錯的元素聲明(您應該始終知道腳本的順序)後移動腳本。
例如onload屬性body

<body onload='document.getElementById("passage").innerHTML = "Paragraph changed!";'>