为什么不允许在<p> </p> <table> </table>中

时间:2012-04-10 10:20:08

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

为什么<p>不能嵌套在<table>内?我可以做出什么修正? 删除<div><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   Transitional):在开始和结束之间不允许文本   元素html'的标签。 E:\ WebSite4 \ test.master 5警告3验证   (XHTML 1.0 Transitional):元素'form'缺少其结束标记。   E:\ WebSite4 \ test.master 21警告4类或CssClass值为   没有定义的。 E:\ WebSite4 \ test.master 33警告5文件'spacer.gif'   没找到。 E:\ WebSite4 \ test.master 116警告7验证(XHTML   1.0 Transitional):元素'img'缺少必需的属性'alt'。 E:\ WebSite4 \ test.master 116警告8验证(XHTML 1.0   Transitional):元素'table'不能嵌套在元素'p'中。   E:\ WebSite4 \ test.master 78警告9验证(XHTML 1.0   Transitional):元素'table'不能嵌套在元素'p'中。   E:\ WebSite4 \ test.master 93

2 个答案:

答案 0 :(得分:28)

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

  

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

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

答案 1 :(得分:2)

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

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

<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>