在表内形成

时间:2012-06-21 12:50:11

标签: html-form

为什么这是错的?

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

我在谈论表格标签中表格标签的位置。

3 个答案:

答案 0 :(得分: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元素可以包含任何“flow”元素(如第一个代码块中所示),“flow”包含块级元素:

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

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

答案 1 :(得分:2)

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

答案 2 :(得分:1)

因为根据标准,您只能将<form>标记放在<td><table>之内。