我正在使用原始html和JQuery讨论一些想法。我做的一件事是创建一个包含一组行的表元素。

<table id="MyTable" >
    <tr>
        <td>Title</td>
    </tr>
    <tr>
        <td>1</td>
    </tr>
    <tr>
        <td>2</td>
    </tr>
    <tr>
        <td>3</td>
    </tr>
    <tr>
        <td>4</td>
    </tr>
</table>


但是当我在FireFox + Firebug,IE8开发人员工具栏或Google Chrome JavaScript调试器...所有这些都显示在所有tr节点周围都有一个tbody元素。

我不反对这种情况...但这是标准行为吗?

评论

有趣的是,如果您正在使用JavaScript进行dom爬网,那么如果其他人不了解,那么多余的肢体会使他们绊倒。这意味着表单元格中的内容被嵌套了一个额外的元素!

开发刮板时,这尤其令人讨厌。有什么办法可以关闭它吗?还是用于查看发送到浏览器的原始代码的扩展程序?

当您尝试通过子选择器应用CSS样式时,尤其烦人:table> tr> td。您必须使用后代选择器:table tr> td,或者如果您确实要严格,则要同时满足以下两种情况:table> tr> td,table> tbody> tr> td

#1 楼

http://htmlhelp.com/reference/html40/tables/tbody.html:


TBODY元素定义了表中的一组数据行。 TABLE必须具有一个或多个TBODY元素,这些元素必须位于可选的TFOOT之后。 TBODY结束标签始终是可选的。当表仅包含一个TBODY且不包含THEAD或TFOOT时,开始标记是可选的。


所以那里总是有一个tbody(尽管有时开始标记和结束标记都是可选的,而省略了),并且您所使用的工具正确地向您展示。另一方面,除非您明确包含它们,否则永远不会出现“ thead”或“ tfoot” (s)也必须明确。

评论


至少根据规范,我不确定您的链接是否正确。在SO的其他地方看到此内容。

–user533832
2012年10月26日18:02

@Jack Douglas:不,链接到该答案的规范明确表示<!ELEMENT TABLE--(CAPTION ?,(COL * | COLGROUP *),THEAD ?, TFOOT ?, TBODY +)>和<!ELEMENT TBODY OO(TR )+-表主体->起始标记:可选,结束标记:可选-也就是说,表元素具有一个或多个tbody元素(TBODY +),而tbody元素具有可选的(如果未指定,则是隐式的)开始标签。诚然,这与TBODY完全是可选的并没有什么不同,但是这个问题正是关于这一差异的-DOM中是否存在它是否出现在html文本中。

–ysth
2012年10月27日0:36



如果您有扫帚,但扫帚手柄和扫帚头都是可选的,那么实际上是否有扫帚? 是必需的,但它的两个标签都是可选的,这是一个很奇怪的概念,并且是(很多)规范如此混乱和理解不清的原因之一。

– tobuslieven
2015年9月11日在8:54

#2 楼

是的,tbody是指示表主体的标准元素。不需要将其放在标记中,但是如您所见,它将被包含在DOM中。

评论


为什么还不行,他们呢? ;-)

–脑
09年6月2日在6:03

看起来您可以拥有它们。我认为w3schools将有更多细节,但这是我在第一遍发现的所有内容。 w3schools.com/HTMLDOM/dom_obj_table.asp

– MatrixFrog
09年6月2日在6:10

为什么不走/走?好吧,因为不需要将它们呈现为tbody所在的表。

–乔丹·琼斯(Jordan S. Jones)
09年6月2日在6:18

用荷马·辛普森不朽的话说:““!”

–乔丹·琼斯(Jordan S. Jones)
2009年6月2日7:32

@Cerebrus:好吧,即使我也赞成这个答案,但是给出的参数有些错误,因为它仅涉及标记规范,但是OP询问DOM。所以有点像这里所说的:DOM(模型)和HTML(标记)之间的区别。我会说缺少该文档的链接是:接口HTMLTableElement-DOM具有TBODY的原因是因为标记具有标记。不是因为标记缺失。它与表的HTMLElement的更特定子类型有关。

– hakre
13年8月26日在6:30

最近发表