javascript .childNodes和.children之间的区别

前端之家收集整理的这篇文章主要介绍了javascript .childNodes和.children之间的区别前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我已经使用 javascript一个星期了.我目前正致力于通过节点使工作/改变.但是我注意到了一些奇怪的东西,对于一个不熟练的javascripter来说也是如此.

我的网站中有一个结构,如下所示:

<html>

<head>
    <title>....</title>
    <link/>
    <script></script> 
</head>

<body>
    <div 1>
        <div 2></div>  
    </div>
</body>
</html>

当我试图找到具有下一个函数的子节点时:

var headerBox = document.body.childNodes;
var txt = "";

for (var x = 0; x < headerBox.length; x ++) {
txt =txt+"Childnode["+x+"]: "+headerBox[x].localName+" ("+headerBox[x].className+")<br>";
}

var x = document.getElementById(Box);
x.innerHTML = txt;

我得到一个列表,其中包含一些未定义的“NULL”以及reali DIV

但是,当我只是将“document.body.childNodes”更改为“document.body.children”时,一切都很完美,“NULL”值甚至会发生变化.

我想知道的是“NULL”值在HTML文件中表示的是什么,因为“NULL”值的位置没有元素.在我的脑海里,它给了我一些不存在的东西,可见,但它是……

有人可以向我解释发生了什么事吗?

Ps:我很抱歉可能转发这个但我无法找到关于此事的合适的其他问题!

Pss:找到一个转贴(What is the difference between children and childNodes in JavaScript?).但它没有回答为什么它仍然认为看不见的未定义的子节点.

解决方法

childNodes将为您提供各种节点,而子节点将只为您提供元素节点.您可以使用nodeType检查当前节点的节点类型:
document.body.childNodes[0].nodeType

这会给你一个整数:

1   ELEMENT_NODE
2   ATTRIBUTE_NODE
3   TEXT_NODE
4   CDATA_SECTION_NODE
5   ENTITY_REFERENCE_NODE
6   ENTITY_NODE
7   PROCESSING_INSTRUCTION_NODE
8   COMMENT_NODE
9   DOCUMENT_NODE
10  DOCUMENT_TYPE_NODE
11  DOCUMENT_FRAGMENT_NODE
12  NOTATION_NODE

正如您所看到的,使用childNodes将为您提供一个列表,其中包含文本节点(即使它们填充了空格),注释和各种其他节点类型,您可能不必过于担心.

原文链接:https://www.f2er.com/js/154868.html

猜你在找的JavaScript相关文章