为什么预标签后的换行消失了?

Ret*_*mür 4 html javascript dom

为什么紧跟在<pre>标记之后的新行不会出现在DOM中?

<html>
<body>

<div id="mydiv">
hello
div
world
</div>

<pre id="mypre">
hello
pre
world
</pre>

<script>
alert("div content: "+document.getElementById("mydiv").innerHTML)
alert("pre content: "+document.getElementById("mypre").innerHTML)
</script>

</body>
</html>
Run Code Online (Sandbox Code Playgroud)

显示与div-tag之后的换行符不同,预标记后的换行符似乎不在dom中.此外,整个身体的innerHTML在预标签后没有显示换行符.

如果原始HTML文档在<pre>之后包含换行符,有没有办法在JS中找到?

T.J*_*der 7

因为这是规范所要做的:

注意:在HTML语法中,将pre删除紧跟元素开始标记之后的前导换行符.

因此,如果你想要那个换行符,有点违反直觉,你必须添加一个额外的换行符:例子

<pre id="mypre">

hello
pre
world
</pre>
Run Code Online (Sandbox Code Playgroud)

附注:我强烈建议您始终包含doctype,即使是在您的问题中的简短示例中也是如此.它可以有所作为(虽然我不认为它在这种情况下).