2011-04-16 89 views
9

我可以得到一个元素的所有后代的计数,但我似乎无法只针对即时孩子。这是我目前所拥有的。使用javascript来计算元素的直接子元素

var sectionCount = document.getElementById("window").getElementsByTagName("section").length; 

我已经玩过其他的东西和不同的语法,但我似乎无法得到它。

jQuery的等效是:

var sectionCount = $("#window > section").length; 

但我需要做的只是这个JavaScript。

回答

15

使用DOM选择器接口(querySelectorAll)。

var selectionCount = document.querySelectorAll("#window > section").length; 

如果你想有一个向后兼容的解决方案,通过childNodes环路和计数元素节点。

var w = document.getElementById('window'); 
var count = 0; // this will contain the total elements. 
for (var i = 0; i < w.childNodes.length; i++) { 
    var node = w.childNodes[i]; 
    if (node.nodeType == Node.ELEMENT_NODE && node.nodeName == "SECTION") { 
     count++; 
    } 
} 
+4

但是,这是不符合史前的情况。 IE IEn。 – 2011-04-16 07:49:58

+1

@卡斯帕尔 - 史前大声笑,它不是很久以前。为IE添加了一个解决方案。 – Anurag 2011-04-16 07:53:41

+0

谢谢,这是诀窍! – 2011-04-18 04:03:42

相关问题