td
内部の一部を囲みたいので問題がtr
ありますので、知っておく必要があります。
どのDOM要素がtrの子になることができますか?(私はdiv
できません。)
W3Cはこのようなものを指定します。については、ここでtr
見つけることができます。基本的に、要素のみが。の直接コンテンツになることができます。th
td
tr
テーブル内に他のものが必要な場合は、または要素内に配置する必要があります。たとえば、を含むフロー要素を含めることができます。td
th
td
div
ul
状況は、私が詳細に説明した状況と非常に似ています。 <ul>内で<li>と一緒に他のTAGを使用できますか?ですから、最初にそれを読むことをお勧めします。
特に、あまり明白ではない点は、ASCII空白はテキストノードを形成しないのに対し、非空白文字は形成され、の子にはなり得ない不正なテキストノードを形成することですtable
。
tr
次に、現在の標準https://html.spec.whatwg.org/multipage/tables.html#the-table-elementの「コンテンツモデル」に次のように表示されます。
コンテンツモデル:0個以上
td
のth
、、およびスクリプトをサポートする要素。
質問がHTML仕様に準拠するHTMLドキュメントから構築されたDOMツリーに関するものである場合、paxdiabloの回答で説明されているように、回答はとですtd
。th
ただし、スクリプトでは、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
要素が含まれているdiv
場合、パーサーはそのような場合を処理する準備ができていません。HTMLマークアップでは、要素をグループ化td
する(それらをの子にする以外の方法で)ことはできません。tr
しかし、DOMでは、奇妙なツリーを作成できます。
td
一部の要素を特別な方法で処理したい場合は、それらに。を付けますclass
。