我可以将 <PRE> 标签嵌入到 <P> 标签中吗?

Can I embed <PRE> tag into <P> tag?

当我只使用一个 <p> 标签时,为什么 <p> 有两个元素?

如果用<center>标签代替<pre>,结果是一样的。

如果<b>标签代替<pre>,a.length的结果是1。

<!DOCTYPE html>
<html>
<head>

</head>
<body>
  <p><pre>name: id:</pre></p>
<script>
  a = document.getElementsByTagName("p");
  document.write("LEN:"+a.length+"<BR>");
  for(i=0;i<a.length;i++){
    document.write(a[i].innerHTML+"<BR>");
  }
</script>

<pre> 不能在 <p> 内。因此,当 HTML 解析器在 <p> 中遇到 <pre> 时,它将首先关闭 <p>。然后它遇到 </p>,一个没有开始标签的结束标签,并假定您想要 <p>。生成的结构是:

<p></p>
<pre>...</pre>
<p></p>

你怎么知道 <pre> 不能在 <p> 里面?请参阅 MDN, or even better in HTML spec 上的 <p>,并注意 "Permitted content: Phrasing content"。查看 "phrasing content" 是什么,可以看到它不包括 <pre>.