【问题标题】:Problem in using javascript childNodes.length property with elem将 javascript childNodes.length 属性与 elem 一起使用时出现问题
【发布时间】:2009-12-18 08:50:04
【问题描述】:

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

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

alert(childnodelength);

但无论编号如何,我总是得到相同的值 4。的孩子,与上述警报。 我也尝试过以下方式。

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

上面的行总是给我 1 而不管编号。的孩子。我不确定我是否在这两种方式中都正确引用。

因此我找不到号码。子节点。

有人可以帮我解决这个问题吗?

谢谢

【问题讨论】:

  • 树视图的 HTML 是什么样的?
  • 您是否在 Firebug 中通过执行 dir(elem) 来查看此内容,然后深入了解您想要的内容?
  • 添加示例 HTML 否则无法帮助您

标签: javascript dom


【解决方案1】:

请记住,childNodes 只向下看一级,因此只要您有相同数量的直系子级,值就会相同。也许你想要的只是数一数所有的孩子?

如果你想要所有的子元素,你可以使用getElementsByTagName("*")。请注意,"*" 参数的使用在 IE5.5 中不起作用,这也可能对在 quirks 模式下运行的更新版本的 IE 造成问题。

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

【讨论】:

    【解决方案2】:

    也许子节点是一个 DIVTable 包裹了您需要计数的节点?

    【讨论】:

      猜你喜欢
      • 2011-03-15
      • 2011-05-27
      • 1970-01-01
      • 1970-01-01
      • 2023-04-07
      • 2010-10-26
      • 2020-06-17
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多