2015-12-15 84 views
1

我試圖通過純'javascript'找到一個節點的子元素數量,但得到意想不到的錯誤。查找一個元素的子元素數量返回'null'錯誤

HTML:

<html> 
<head> 
<script> 
var a = document.getElementById('div1').children.length; 
console.log(a); 
</script> 
</head> 
<body> 
<div id="div1"> 
<p>This is para1.</p> 
<p>This is para2.</p> 
</div> 
</body> 
</html> 

錯誤:

TypeError: Cannot read property 'children' of null 

但是,我可以清楚地看到,我的div有2級孩子的節點。有人可以幫忙嗎?

+1

只需將'script'放入'body'部分。 –

回答

4

你應該把你的代碼onload事件

window.onload = function() { 
    var a = document.getElementById('div1').children.length; 
    console.log(a); 
} 

</body>之前把你的腳本,因爲你試圖獲取DOM節點之前將創建它

1

你的問題是由順序引起您的瀏覽器在頁面構建期間發生的事件。

按順序同步分析和評估HTML。只要HTML中出現腳本,腳本就會被評估。當您的腳本(document.getElementById('div1') ...)被評估時,div1尚不存在(解析器尚未看到它),因此結果爲null,您將得到異常。

這就是爲什麼建議將內聯腳本標記放在HTML文檔末尾的正文結束標記(</body>)之前。