2

为什么这是错误的?

<table>
  <form>
    <tr><td>something something</td/>
  </form>
</table>

我说的是表格标签内表格标签的位置。

4

3 回答 3

5

DTD

<!ELEMENT TABLE - -
     (CAPTION?, (COL*|COLGROUP*), THEAD?, TFOOT?, TBODY+)>
<!ELEMENT CAPTION  - - (%inline;)*     -- table caption -->
<!ELEMENT THEAD    - O (TR)+           -- table header -->
<!ELEMENT TFOOT    - O (TR)+           -- table footer -->
<!ELEMENT TBODY    O O (TR)+           -- table body -->
<!ELEMENT COLGROUP - O (COL)*          -- table column group -->
<!ELEMENT COL      - O EMPTY           -- table column -->
<!ELEMENT TR       - O (TH|TD)+        -- table row -->
<!ELEMENT (TH|TD)  - O (%flow;)*       -- table header cell, table data cell-->

这些是元素中唯一可以包含的table元素(在这种情况下,在 HTML 4 中,但是您检查了相同类型的文档是否有其他版本,并且没有太大变化)。


另一方面,一个form元素可以包含任何其他块级元素(其他形式除外):

<!ELEMENT FORM - - (%block;|SCRIPT)+ -(FORM) -- interactive form -->

并且该td元素可以包含任何“流”元素(如第一个代码块中所示),“流”包括块级元素:

<!ENTITY % flow "%block; | %inline;">

因此,您可以将<form>标签放置在整个表格周围或一个表格单元格内。

于 2012-06-21T12:54:50.787 回答
2

只有元素 CAPTION、COL、COLGROUP、THEAD、TFOOT 和 TBODY 允许作为 TABLE 元素的子元素。请参阅HTML 规范中的 TABLE 元素

于 2012-06-21T12:54:50.013 回答
1

因为你只能根据标准把<form>标签放在里面<td>或外面。<table>

于 2012-06-21T12:55:32.440 回答