14

我有问题,因为我想包围一些td内部tr,所以我需要知道。

哪些 DOM 元素可以是 tr 的子元素?(我知道div不能。)

4

4 回答 4

15

W3C 指定这个东西。因为tr,你可以在这里找到它。基本上,只有thand元素td可以是.tr

如果你想在你的表格里放其他东西,它必须放在tdorth元素里面。例如,td可以包含流元素,包括div.

于 2012-09-28T06:34:45.213 回答
6

HTML 规范指出:

允许的内容

零个或多个:一个td元素,或一个th元素

<tr>元素只能包含s <td><th>s。

于 2012-09-28T06:33:53.090 回答
2

ul这种情况与我在以下详细描述的情况非常相似:我们可以在 <ul> 中使用任何其他 TAG 以及 <li> 吗?所以我建议你先阅读。

值得注意的是,不太明显的一点是 ASCII 空白不形成文本节点,而任何非空白字符形成和非法文本节点,不能是table.

tr然后,在当前标准https://html.spec.whatwg.org/multipage/tables.html#the-table-element的“内容模型”中我们看到:

内容模型:零个或多个td, th, 和脚本支持元素。

于 2020-03-30T11:46:50.260 回答
0

如果问题是关于由符合 HTML 规范的 HTML 文档构造的 DOM 树,那么答案是tdand th,正如 paxdiablo 的答案中所解释的那样。

但是您可以在脚本中随意修改 DOM 树。例如:

<!doctype html>
<table border>
<tr><td>foo <td>bar
</table>
<script>
var p = document.createElement('div');
p.innerHTML = 'Hello world!';
document.getElementsByTagName('tr')[0].appendChild(p);
</script>

这将使元素成为div元素的子tr元素。你甚至可以创建一些td元素并让它们成为元素的子div元素。

这是否有意义以及是否会混淆浏览器是另一个问题。并且浏览器不会正常解析 HTML 标记,例如trelement 包含div作为子元素的元素 - 解析器不准备处理这种情况。在 HTML 标记中不可能对td元素进行分组(以任何其他方式,而不是使它们成为 a 的子级)。tr但在 DOM 中,您可以创建奇数树。

如果只是想以特殊方式处理某些td元素,请给它们一个class.

于 2012-09-28T10:17:29.560 回答