【问题标题】:Why is <table> not allowed inside <p>为什么 <p> 内不允许 <table>
【发布时间】:2012-04-22 15:14:19
【问题描述】:

为什么&lt;p&gt; 不能嵌套在&lt;table&gt; 中?我能做出什么更正? 删除 &lt;div&gt;&lt;p&gt; 标签会破坏我的设计。由于网站遵循客户提供的设计。

我有以下代码,它在 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

【问题讨论】:

  • XHTML 标准不允许这样做。
  • &lt;p&gt;里面还能用什么

标签: html asp.net visual-studio-2008 html-table


【解决方案1】:

在 HTML 中,重要的是要了解P elements 不能包含其他块级元素,而 TABLE 是块级元素。 P 结束标记是可选的,当您尝试使P 元素包含它不能包含的内容时,浏览器会假定结束P 标记。

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

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

【讨论】:

  • @Rohit:为什么不能使用div 而不是paragraph,换句话说,既然已经有div,为什么还需要它?您可以通过 right_articles 类控制布局,不是吗?
  • 是我得到的设计的一部分。它里面只有一个图像。但我需要一张桌子。

【解决方案2】:

在回答您的实际问题时,段落不能包含任何其他块元素,其中包括表格。此外,关闭 &lt;/p&gt; 标记是可选的,因此解析器随后找到的第一个关闭标记将视为已关闭该段落。

如果我能看到更多代码和布局会有所帮助,但是我相信从表格周围删除 &lt;p&gt; 标记,然后使用 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>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-02-21
    • 2022-01-19
    • 1970-01-01
    • 1970-01-01
    • 2016-12-28
    • 2021-11-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多