为什么在<p>标签内不能使用<table>标签?

21
为什么不能在内嵌套

?我应该怎样修改呢? 去掉

标签会破坏我的设计,因为网站遵循客户提供的设计。 我有以下代码,在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>

警告

Warning 1 This end tag has no matching start tag.
    E:\WebSite4\test.master 121 

Warning 2 Validation (XHTML 1.0 Transitional): 
    Text is not allowed between the opening and closing tags for element html'. 
    E:\WebSite4\test.master 5 

Warning 3 Validation (XHTML 1.0 Transitional): 
    Element 'form' is missing its closing tag.  
    E:\WebSite4\test.master 21 

Warning 4 The class or CssClass value is not defined. 
    E:\WebSite4\test.master 33 

Warning 5 File 'spacer.gif' was not found. 
    E:\WebSite4\test.master 116 

Warning 7 Validation (XHTML 1.0 Transitional): 
    Element 'img' is missing required attribute 'alt'. 
    E:\WebSite4\test.master 116 

Warning 8 Validation (XHTML 1.0 Transitional): 
    Element 'table' cannot be nested within element 'p'.
    E:\WebSite4\test.master 78 

Warning 9 Validation (XHTML 1.0 Transitional): 
    Element 'table' cannot be nested within element 'p'.
    E:\WebSite4\test.master 93

6
XHTML 标准不允许此操作。 - Oded
<p>标签内还可以使用什么? - Rohit Vipin Mathews
2个回答

42
在HTML中,理解 P元素 不能包含其他块级元素,而是一个块级元素。当您尝试让PP

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

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

元素包含它无法包含的内容时,浏览器会自动添加缺失的闭合标签。

4
@Rohit:你为什么不能使用div替代段落呢?换句话说,既然已经有了div,为什么还需要段落呢?你不是可以通过right_articles类来控制布局吗? - Tim Schmelter
<p>是我得到的设计部分,它里面只有一个图片。但我需要一个表格。 - Rohit Vipin Mathews

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>

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接