使用带有elem的javascript childNodes.length属性时出现问题

时间:2009-12-18 08:50:05

标签: javascript dom

我有一个带拖放功能的树视图。完成拖放后,我需要找到新父节点的子节点的计数。所以我正在使用以下内容 线

var childnodelength=elem.parentNode.parentNode.childNodes.length;

alert(childnodelength);

但是我总是得到相同的4值,不管是不是。孩子们,有上述警报。 我也尝试过以下方式。

alert(elem.getElementsByTagName("A")[0].childNodes.length);

以上线总是给我1,不管是否。孩子们我不确定我是否在两种方式中都正确引用。

因此我无法找到否。子节点。

请有人帮我这个吗?

由于

2 个答案:

答案 0 :(得分:1)

请注意,childNodes只会向下看一级,所以只要你拥有相同数量的直接孩子,价值就会相同。也许你想要的是把所有孩子一直算在树上?

如果您想要所有子元素,可以使用getElementsByTagName("*")。请注意,使用"*"参数在IE5.5中不起作用,这可能会在以怪异模式运行时为更新版本的IE带来麻烦。

关于childNodes.length的另一个好处是它可能会在IE中返回与其他浏览器不同的值,因为计算文本节点的方式不同。 。 。如果要排除文本节点并且只计算元素,则可以遍历childNodes并检查nodeType的值(1 = ELEMENT_NODE,2 = ATTRIBUTE_NODE,3 = TEXT_NODE等)您也可以使用children代替childNodes如果你只想要元素节点,但在IE中,这会错误地计算注释节点,而在Firefox中,直到版本3.5才支持它。

答案 1 :(得分:0)

子节点可能是DIVTable,它包装了您需要计算的节点吗?