gpt4 book ai didi

javascript - javascript .childNodes 和 .children 之间的区别

转载 作者:数据小太阳 更新时间:2023-10-29 04:59:18 25 4
gpt4 key购买 nike

我已经使用 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”以及真实的 DIV

但是当我简单地将“document.body.childNodes”更改为“document.body.children”时,一切都完美无缺,“NULL”值甚至会改变。

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

谁能给我解释一下这是怎么回事?

Ps:我很抱歉可能会重新发布这个,但我找不到关于这个问题的其他合适的问题!

Pss:发现了一个转发(What is the difference between children and childNodes in JavaScript?)。但它没有回答为什么它仍然将看不见的子节点识别为未定义。

最佳答案

childNodes 会为您提供各种节点,而 children 只会为您提供元素节点。您可以使用 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 将为您提供一个列表,其中包含文本节点(即使它们填充有空格)、评论和各种其他节点类型,您可能不会不必担心太多。

关于javascript - javascript .childNodes 和 .children 之间的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16762027/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com