0

我在我的元素检查器(chrome 和 firebug)中注意到,html 的解析方式与我原本打算解析的方式不同。一些元素最终超出了它们的父元素,这通常来自损坏的 html(未闭合的标签等)。我将代码放入 W3C 验证器并将 html 缩小到几行。

我的 HTML 看起来像:

<html lang="en">
    <head>
        <title>title because we must</title>
        <meta charset="utf-8"/>
    </head>
    <body>
        <p>
            <div>test</div>
        </p>
    </body>
</html>

我得到的错误是

第 10 行,第 6 列:范围内没有 p 元素,但看到了 ap 结束标记。

由于 HTML5 验证器仍处于试验阶段,我想我也应该尝试 XHTML 1.1 验证器。然后它提到我可能正在尝试将块元素放在内联元素中。这不应该是这种情况,因为默认情况下“p”和“div”都是块元素。

谁能解释这种行为?

4

3 回答 3

5

一个p元素不能包含一个div元素

元素的结束标签p是可选的

所以:

<p>
    <div>test</div>
</p>

方法:

<p></p>
<div>test</div>
</p>

所以你有一个不再打开的元素的结束标签。

由于 HTML5 验证器仍处于试验阶段,我想我也应该尝试 XHTML 1.1 验证器。然后它提到我可能正在尝试将块元素放在内联元素中。

是的,在错误的扩展解释中,它提到您可能试图将块元素放在内联元素中。

错误消息本身显示:

文档类型不允许此处的元素“div”

这很清楚。

于 2013-10-15T09:41:03.683 回答
1

您不能将div元素放置在段落<p>标记内。

这是无效的:

<p>
  <div>test</div>
</p>

正确的方法是divp.

于 2013-10-15T09:42:24.480 回答
-1

我们不能放在<div>里面<p>,因为它是内联元素,根据 w3c 标准不建议这样做,但如果你这样做,浏览器会像这样显示 div out side p 标签

<p></p>
<div>div contents<div>
<p></p>

供参考见下文

http://www.w3.org/TR/html4/sgml/dtd.html
http://www.w3.org/TR/html4/sgml/dtd.html

<!ELEMENT P - O (%inline;)* -- paragraph -->

于 2013-10-15T11:05:34.570 回答