什么是javascript中的根节点

时间:2012-08-03 07:48:41

标签: javascript

为什么我们使用根节点。在下面给出的函数中,它们使用根节点函数。我想理解这个函数也是'!rootNode'的含义。

 function getElementsByClassName(cn, rootNode) {
  if (!rootNode) {
    rootNode = document;
  } 
  for (var r=[], e=rootNode.getElementsByTagName('*'), i=e.length; i--;) {
    if ((' '+e[i].className+' ').indexOf(' '+cn+' ')>-1) {
      r.push(e[i]); 
    }
  }
  return r;  
}

3 个答案:

答案 0 :(得分:1)

该函数中的

rootNode是您要查找从中开始的元素的顶级节点。 document会查看整个文档。 document.body只会出现在文档正文中。身体中的其他一些元素只会出现在该元素的子元素中。

声明:

if (!rootNode) {

正在检查您是否为该参数传递了任何内容,如果您没有传递或传递undefinednull或任何其他虚假值,则它将默认为文档作为根节点。这允许人们使用如下函数:

var items = getElementsByClassName("foo");

,该功能将查看整个文档。

答案 1 :(得分:1)

在您的示例中,rootNode是HTML元素,从该元素开始以类名{{1}的元素递归搜索分层DOM树(这是网页在JavaScript中的表示方式) }}

这允许函数的调用者指定他们想要搜索类名为cn的元素的位置。如果调用者未指定cn,则该函数仅返回整个网页中具有类名rootNode的每个元素。

数组cn初始化为一个空数组,其中添加了找到的元素(使用r=[])。

使用

push是因为i--循环从for开始 - 该函数遍历由i=e.length从数组末尾返回到开始的元素。 getElementsByTagName循环将for的结果作为布尔值计算,当i--命中i时退出(因为在此迭代中,布尔评估将针对该值进行{{1} 1}},因为-1 post-decrements 0}的值。

答案 2 :(得分:1)

如果您不将rootNode作为参数,则将搜索整个文档。否则,将搜索来自给定根节点的所有降序节点。