为什么这是错的?
<table>
<form>
<tr><td>something something</td/>
</form>
</table>
我在谈论表格标签中表格标签的位置。
答案 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>
之内。