gpt4 book ai didi

javascript - 节点如何放置在 DOM 树中?

转载 作者:行者123 更新时间:2023-11-30 12:29:29 25 4
gpt4 key购买 nike

我正在学习 JavaScript。我是文档对象模型 (DOM) 主题的新手。

我对节点在 DOM 树中的布局方式感到困惑?

我使用了这个 HTML 文件。

<html>
<body>

<div id="page">
<h1 id="header">List</h1>
<h2>Buy groceries</h2>

<ul>
<li id="one"><em>emText</em>directText</li>
</ul>

</div>

<div id='TDiv'>
<h1 id='travelhead'>headText</h1>
</div>

<script src="javac.js"></script>
</body>
</html>

我使用了这个 JavaScript 文件。

var li = document.getElementById('one');

var emText = li.firstChild.firstChild.nodeValue;
var directText = li.firstChild.nextSibling.nodeValue;

document.write(emText + '<br />');
document.write(directText + '<br />');

var div = document.getElementById('TDiv');
var headText = div.firstChild.nextSibling.firstChild.nodeValue;
document.write(headText);

两个变量:

var li = document.getElementById('one');
var div = document.getElementById('TDiv');

保存 li 元素节点和 div 元素节点在 DOM 树中的位置。

虽然这行给出了正确的答案,但它的表述出乎意料:

var headText = div.firstChild.nextSibling.firstChild.nodeValue;

用于获取DIV节点元素中H1节点元素中文本节点的文本值。所以我希望它是这样写的:

var headText = div.firstChild.firstChild.nodeValue;

DIVH1 作为第一个子节点,而 H1 又将 Text 节点作为第一个子节点。

div.firstChild 应该返回 H1
div.firstChild.firstChild 应该返回 H1 的 Text 节点。
div.firstChild.firstChild.nodeValue 应该返回文本节点的值。

这些节点实际上是如何放置在 DOM 树中的?!

最佳答案

<div> 之间有空格和 <h1> - 换行符。这将(或可能)变成一个文本节点。

如果您更改了 HTML:

<div id='TDiv'><h1 id='travelhead'>headText</h1></div>

那么 DOM 将不会有那个额外的文本节点。

这很好地说明了为什么 JavaScript 代码期望来自 HTML 文档的特定结构是一个糟糕的想法。

关于javascript - 节点如何放置在 DOM 树中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28194414/

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