我有问题,因为我想包围一些td
内部tr
,所以我需要知道。
哪些 DOM 元素可以是 tr 的子元素?(我知道div
不能。)
W3C 指定这个东西。因为tr
,你可以在这里找到它。基本上,只有th
and元素td
可以是.tr
如果你想在你的表格里放其他东西,它必须放在td
orth
元素里面。例如,td
可以包含流元素,包括div
.
ul
这种情况与我在以下详细描述的情况非常相似:我们可以在 <ul> 中使用任何其他 TAG 以及 <li> 吗?所以我建议你先阅读。
值得注意的是,不太明显的一点是 ASCII 空白不形成文本节点,而任何非空白字符形成和非法文本节点,不能是table
.
tr
然后,在当前标准https://html.spec.whatwg.org/multipage/tables.html#the-table-element的“内容模型”中我们看到:
内容模型:零个或多个
td
,th
, 和脚本支持元素。
如果问题是关于由符合 HTML 规范的 HTML 文档构造的 DOM 树,那么答案是td
and 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 标记,例如tr
element 包含div
作为子元素的元素 - 解析器不准备处理这种情况。在 HTML 标记中不可能对td
元素进行分组(以任何其他方式,而不是使它们成为 a 的子级)。tr
但在 DOM 中,您可以创建奇数树。
如果只是想以特殊方式处理某些td
元素,请给它们一个class
.