2015-01-08 15 views
8

爲什麼我在瀏覽器中出錯?TypeError:document.body爲null

TypeError: document.body is null

代碼在JSfiddle中運行良好。

HTML

<head> 
    <meta charset="UTF-8"> 
    <title></title> 
    <script src="jsscript.js"></script> 
</head> 
<body> 
</body> 

JS

var creElem = document.createElement("p"); 
creElem.innerHTML = "Hellow World"; 
creElem.setAttribute("id", "id_name"); 
document.body.appendChild(creElem); 
+1

的jsfiddle運行腳本加載頁面後。 (左圖中的「onLoad」) – iForests

回答

10

執行代碼中的DOM加載時。將您的邏輯封裝在DOMContentLoaded的事件偵聽器中。

document.addEventListener('DOMContentLoaded', function() { 
    // ... 
}); 

它的jsfiddle工作的原因是因爲JS是在負載執行(這是在的jsfiddle默認選項)。


或者,取決於當你需要的邏輯被執行時,你也可以使用:

window.addEventListener('load', function() { 
    // ... 
}); 

參見:Difference between DOMContentLoaded and Load events