什么是javascript中的根节点
问题描述:
为什么我们使用根节点。在下面给出的函数中,它们使用根节点函数。我想了解这个函数也是'!rootNode'的含义。什么是javascript中的根节点
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;
}
答
在你的榜样,rootNode
是HTML元素从开始递归搜索层次DOM树(这是怎么网页在JavaScript中表示)使用类名称cn
元素。
这允许你的函数的调用者从他们想要搜索类名为cn
的元素的位置指定。如果调用者没有指定rootNode
,则该函数仅返回整个网页中类名为cn
的每个元素。
数组r=[]
被初始化为一个空数组,其中找到的元素被添加到其中(使用push
)。
i--
被使用,因为for
循环开始于i=e.length
- 功能经过由getElementsByTagName
通过到开始从阵列的端部返回的元素。该for
循环计算的i--
结果作为一个布尔值,exitting当i
命中-1
(因为本次迭代布尔评估将已经对falue 0
完成,因为i--
post-decrements的i
值)。
答
rootNode
该函数是您要查找元素的*节点。 document
将在整个文档中查找。 document.body
只会在文档的主体中显示。身体中的其他元素只会在该元素的子元素中看到。
声明:
if (!rootNode) {
正在检查,看看是否通过该参数任何东西,如果你没有,或者传递undefined
或null
或任何其他falsey值,则默认为文件作为根节点。这允许使用如下功能:
var items = getElementsByClassName("foo");
并且该函数将在整个文档中查找。
答
如果你没有给rootNode作为参数,整个文档将被搜索。否则,将搜索来自给定根节点的所有降序节点。
该功能还有一件事为什么我们使用空白数组和我 - 为什么不是我++ – Carlos 2012-08-03 07:56:34
最后一件事要知道为什么我 - 为什么不是我++ – Carlos 2012-08-03 07:59:13
感谢现在很清楚 – Carlos 2012-08-03 08:04:03