JavaScript追加其他节点时是否自动追加文本节点
Are text nodes automatically appended when other nodes are appended by JavaScript
我知道节点之间的白色space会自动添加文本节点,至少在html中的<body>
标签中添加节点时是这样,但我不确定当它们附加 JavaScript 时,请注意这一点。我在网上找不到关于这个案例的任何答案。我用下面的代码测试了它,但即使 body.childNodes
没有 return JS 附加节点之间的文本节点,它看起来像带有附加白色 space 的格式仍然被实现。 (我的简短 html 文档显示了两个由 <body>
标记直接插入的段落和两个由 JS 附加的段落。)我已经将浏览器控制台 returned 的内容放在对 [= 的调用下的注释中15=]。另外,如果在 JS 附加节点时仍然添加文本节点,我将如何删除它们,因为它们没有出现在 .childNodes
?
<!doctype html>
<body>
<p>1</p>
<p>2</P>
</body>
<script>
var i = document.createElement("p");
i.textContent = "I";
document.body.appendChild(i);
var ii = document.createElement("p");
ii.textContent = "II";
document.body.appendChild(ii);
console.log(document.body.childNodes);
//NodeList {
//0: Text{}
//1: HTMLParagraphElement{}
//2: Text{}
//3: HTMLParagraphElement{}
//4: Text{}
//5: HTMLScriptElement{}
//6: HTMLParagraphElement{}
//7: HTMLParagraphElement{}
//}
</script>
不会自动插入文本节点。
只是 HTML 源中的 space 被视为文本。并且 text 成为 DOM.
中的文本节点
如果您删除 HTML 源中元素之间的所有白色space,您将不会有那些文本节点。
并且如果您只将元素节点添加到 DOM,则不会神奇地插入任何文本节点。
请注意插入的段落确实在不同的行中。但这并不是因为它们之间出现了换行符。事实上,那是没有用的,因为所有的白色space(包括换行符)都会折叠成一个简单的space(除非由white-space
指定)。
实际上,段落出现在不同的行中,因为它们有display
: block
. Therefore、
In a block formatting context, boxes are laid out one after the other, vertically
我知道节点之间的白色space会自动添加文本节点,至少在html中的<body>
标签中添加节点时是这样,但我不确定当它们附加 JavaScript 时,请注意这一点。我在网上找不到关于这个案例的任何答案。我用下面的代码测试了它,但即使 body.childNodes
没有 return JS 附加节点之间的文本节点,它看起来像带有附加白色 space 的格式仍然被实现。 (我的简短 html 文档显示了两个由 <body>
标记直接插入的段落和两个由 JS 附加的段落。)我已经将浏览器控制台 returned 的内容放在对 [= 的调用下的注释中15=]。另外,如果在 JS 附加节点时仍然添加文本节点,我将如何删除它们,因为它们没有出现在 .childNodes
?
<!doctype html>
<body>
<p>1</p>
<p>2</P>
</body>
<script>
var i = document.createElement("p");
i.textContent = "I";
document.body.appendChild(i);
var ii = document.createElement("p");
ii.textContent = "II";
document.body.appendChild(ii);
console.log(document.body.childNodes);
//NodeList {
//0: Text{}
//1: HTMLParagraphElement{}
//2: Text{}
//3: HTMLParagraphElement{}
//4: Text{}
//5: HTMLScriptElement{}
//6: HTMLParagraphElement{}
//7: HTMLParagraphElement{}
//}
</script>
不会自动插入文本节点。
只是 HTML 源中的 space 被视为文本。并且 text 成为 DOM.
中的文本节点如果您删除 HTML 源中元素之间的所有白色space,您将不会有那些文本节点。
并且如果您只将元素节点添加到 DOM,则不会神奇地插入任何文本节点。
请注意插入的段落确实在不同的行中。但这并不是因为它们之间出现了换行符。事实上,那是没有用的,因为所有的白色space(包括换行符)都会折叠成一个简单的space(除非由white-space
指定)。
实际上,段落出现在不同的行中,因为它们有display
: block
. Therefore、
In a block formatting context, boxes are laid out one after the other, vertically