18

为什么不能<p>嵌套在里面<table>?我能做出什么更正?删除<div>and<p>标签会破坏我的设计。由于网站遵循客户提供的设计。

我有以下代码,它在 VS2008 中运行良好,但我收到警告:

<div class="right_articles">
    <p>
        <table>
            <tr>
                <td>
                    <img alt="Img not found" src="images/ribbon.gif" style="width: 155px; height: 125px;" />
                </td>
                <td>
                    <asp:Label ID="Label1" runat="server" Text="Label"></asp:Label><br />
                    <asp:Label ID="Label2" runat="server" Text="Label"></asp:Label><br />
                    <asp:Label ID="Label3" runat="server" Text="Label"></asp:Label>
                </td>
            </tr>
        </table> 
    </p>
    <p>&nbsp;</p>
    <p>
        <table>
            <tr>
                <td>
                    <img alt="Img not found" src="images/medal.gif" style="width: 155px; height: 125px;" />
                </td>
                <td>          
                    <asp:Label ID="Label4" runat="server" Text="Label"></asp:Label><br />
                    <asp:Label ID="Label5" runat="server" Text="Label"></asp:Label><br />
                    <asp:Label ID="Label6" runat="server" Text="Label"></asp:Label>      
                </td>
            </tr>
        </table>
    </p>
</div>

警告 1 此结束标记没有匹配的开始标记。E:\WebSite4\test.master 121 警告 2 验证(XHTML 1.0 过渡):元素 html' 的开始和结束标记之间不允许出现文本。E:\WebSite4\test.master 5 警告 3 验证(XHTML 1.0 过渡):元素“表单”缺少结束标记。E:\WebSite4\test.master 21 警告 4 未定义类或 CssClass 值。E:\WebSite4\test.master 33 警告 5 文件 'spacer.gif' 未找到。E:\WebSite4\test.master 116 警告 7 验证(XHTML 1.0 过渡):元素“img”缺少必需的属性“alt”。E:\WebSite4\test.master 116 警告 8 验证(XHTML 1.0 过渡):元素 'table' 不能嵌套在元素 'p' 中。E:\WebSite4\test.master 78 警告 9 验证 (XHTML 1. 0 过渡):元素“table”不能嵌套在元素“p”中。E:\WebSite4\test.master 93


在 HTML 中,重要的是要了解P元素不能包含其他块级元素,而 TABLE 是块级元素。结束标签是可选的P,当你试图让一个P元素包含它不能包含的东西时,P浏览器会假定结束标签。

P 元素代表一个段落。它不能包含块级元素(包括 P 本身)。

http://www.w3.org/TR/html401/struct/text.html#h-9.3.1

4

2 回答 2

39

在 HTML 中,重要的是要了解P元素不能包含其他块级元素,而 TABLE 是块级元素。结束标签是可选的P,当你试图让一个P元素包含它不能包含的东西时,P浏览器会假定结束标签。

P 元素代表一个段落。它不能包含块级元素(包括 P 本身)。

http://www.w3.org/TR/html401/struct/text.html#h-9.3.1

于 2012-04-10T10:31:39.093 回答
3

在回答您的实际问题时,段落不能包含任何其他块元素,其中包括表格。此外,结束</p>标记是可选的,因此解析器随后找到的第一个结束标记将认为已经结束了该段落。

如果我能看到更多代码和布局会有所帮助,但是我相信<p>从表格周围删除标签,然后使用 CSS 正确格式化表格的位置应该可以达到您的结果。

<div class="right_articles">
            <table>
            <tr>
            <td>
                <img alt="Img not found" src="images/ribbon.gif"                     
                    style="width: 155px; height: 125px;" />
            </td>
            <td>
                <asp:Label ID="Label1" runat="server" Text="Label"></asp:Label><br />
                <asp:Label ID="Label2" runat="server" Text="Label"></asp:Label><br />
                <asp:Label ID="Label3" runat="server" Text="Label"></asp:Label>
            </td>
            </tr>
            </table>
            <p>&nbsp;</p>
            <table>
            <tr>
            <td>
                <img alt="Img not found" src="images/medal.gif"                     
                    style="width: 155px; height: 125px;" />
            </td>
            <td>          
                <asp:Label ID="Label4" runat="server" Text="Label"></asp:Label><br />
                <asp:Label ID="Label5" runat="server" Text="Label"></asp:Label><br />
                <asp:Label ID="Label6" runat="server" Text="Label"></asp:Label>      
            </td>
            </tr>
            </table>
        </div>
于 2012-04-10T10:34:17.767 回答