DOM-представление таблицы HTML - PullRequest
3 голосов
/ 21 декабря 2011

Я просто пишу некоторый код для обхода DOM для таблицы, и я получил сюрприз.DOM (по крайней мере, в FF) - это не то, что я ожидал.FF вставил tbody и различные текстовые узлы, которые просто содержат "\ n".Исходный HTML-код:

<table>
<tr>
<th></th><th>Jan</th><th>Feb</th><th>Mar</th><th>Apr</th><th>May</th><th>Jun</th><th>Jul</th><th>Aug</th><th>Sep</th><th>Oct</th><th>Nov</th><th>Dec</th>
</tr>
<tr><th>2010</th>
<td id='tdid0'>53</td>   <td id='tdid1'>249</td>  <td id='tdid2'>1689</td>  <td id='tdid3'>22753</td>
<td id='tdid4'>23051</td><td id='tdid5'>23633</td><td id='tdid6'>23923</td> <td id='tdid7'>23306</td>
<td id='tdid8'>23943</td><td id='tdid9'>24196</td><td id='tdid10'>24440</td><td id='tdid11'>24156</td>
</tr>
<tr><th>2011</th>
<td id='tdid12'>24262</td><td id='tdid13'>22554</td><td id='tdid14'>25507</td><td id='tdid15'>23144</td>
<td id='tdid16'>24354</td><td id='tdid17'>24610</td><td id='tdid18'>24870</td><td id='tdid19'>24424</td>
<td id='tdid20'>24698</td><td id='tdid21'>22640</td><td></td><td></td></tr>
</table>

1 - FF вставил tbody в качестве первого потомка table, поэтому мне нужно подняться на 3 уровня (от td), чтобы найтиtable, а не 2

2 - HTML-представление в Firebug показывает 3 строки, как и ожидалось, где строки 2 и 3 имеют th, за которыми следуют 12 td с.Однако при пошаговом прохождении получается, что у tbody есть 6 дочерних элементов с текстовым узлом NL после каждой строки

3 - Firebug утверждает, что в каждой строке 13 дочерних элементов, как и ожидалось (заголовоки 12 элементов данных).однако при переходе по дочерним элементам с nextSibling оказывается, что ожидаемые элементы th и td фактически разделены текстовыми узлами, содержащими WS.Есть идеи, что происходит?Может ли браузер делать то, что хочет?Спасибо.

1 Ответ

5 голосов
/ 21 декабря 2011

FF вставил tbody

В HTML 4 элемент tr не может быть дочерним элементом элемента таблицы.Вам нужен элемент tbody, thead или tfoot между ними.Начальные теги и end элемента tbody являются необязательными.Firefox правильно вставляет его.

получается, что у tbody 6 дочерних элементов, с текстовым узлом NL после каждой строки

В вашей разметке есть пробел

получается, что ожидаемые элементы th и td фактически разделены текстовыми узлами, содержащими WS

То же самое

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...