2015-12-08 102 views
-1

getElementById在分配給變量時返回空值。getElementById在分配給變量時返回空值

var element = document.getElementById("ul1"); 
var newelement = document.createElement("li"); 
newelement.innerHTML = "New"; 
element.appendChild(newelement); 
+0

你放置你的腳本標籤ul1' – Ramanlfc

+1

你要麼是沒有與該ID的元素之後'或它不可用*** ***! – adeneo

+0

請描述。 –

回答

0

當你把你的JavaScript將加載(並阻止body的加載)頁面上的任何其他元素之前的文檔head

的你是什麼樣一個簡單的例子實際上做的確是這樣的:

<!-- script runs before element creation --> 
<script type="text/javascript"> 
    var element = document.getElementById('ul1'); 
</script> 
<!-- this is after execution, where JS could not find the element but only now is the element actually created --> 
<ul id="ul1"></ul> 

爲了解決這個問題,你可以做幾件事情

  • 地方下面的<script>標籤元素你想要的目標
  • <script>標籤放在</body>標籤的正上方
  • 使用window.onload = function() { ... }確保頁面在做任何事之前被加載。

然後ul元素將存在,你就可以添加您的李:)

+0

在對Mathews的回答發表評論時,你說:「這是關於DOM未被加載的問題」你怎麼知道這個問題? OP的代碼段不提供這些信息。 – Teemu

+0

我個人最喜歡的是將我的腳本放入一個鏈接文件中的(少數)函數中,然後在''之上調用它們。它更乾淨並利用緩存。 – abluejelly

+0

@Teemu,因爲'document.getElementById'找不到你的元素的唯一原因是1)'ID字面上不存在(打字錯誤或刪除)'或2)'DOM沒有加載'。前者是一個非常基本的調試問題,後者根本不知道這是一件事情。 – abluejelly

相關問題