我知道文本节点会自动添加到节点之间的空白区域,至少在html中的<body>
标记中添加节点时,但我不确定它们是否附加了JavaScript。关于这个案子,我在网上找不到任何答案。我使用以下代码测试了它,但即使body.childNodes
没有在JS附加节点之间返回文本节点,看起来仍然实现了带有额外空白的格式。 (我的简短html文档显示了由<body>
标签直接插入的两个段落和两个由JS附加的段落。)我已经在console.log
的调用下放置了浏览器控制台在评论中返回的内容。此外,如果在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>
答案 0 :(得分:1)
文本节点不会自动插入。
只是HTML源代码中的空格被视为文本。并且文本成为DOM中的文本节点。
如果删除HTML源代码中元素之间的所有空格,则不会有这些文本节点。
如果您只将元素节点添加到DOM中,则不会神奇地插入任何文本节点。
请注意插入的段落确实在不同的行中。但那并不是因为他们之间出现了换行符。事实上,这将是无用的,因为所有空格(包括换行符)都会折叠到一个简单的空间(除非white-space
指定)。
事实上,这些段落显示在不同的行中,因为它们有display
: block
。 Therefore,
在块格式化上下文中,框一个接一个地垂直排列