在表内形成

Ale*_*les 2 forms

为什么这是错的?

<table>
  <form>
    <tr><td>something something</td/>
  </form>
</table>
Run Code Online (Sandbox Code Playgroud)

我在谈论表标签内的表单标签的位置.

Emi*_*röm 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-->
Run Code Online (Sandbox Code Playgroud)

这些是元素中唯一可以包含的table元素(在本例中为HTML 4,但是对于其他版本检查相同类型的文档,并且它没有太大变化).


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

<!ELEMENT FORM - - (%block;|SCRIPT)+ -(FORM) -- interactive form -->
Run Code Online (Sandbox Code Playgroud)

td元素可以包含任何"流"元件(如在第一代码块看到的),和"流"包括块级元素:

<!ENTITY % flow "%block; | %inline;">
Run Code Online (Sandbox Code Playgroud)

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