In doing some scraping work I keep encountering the <tbody>
tag in the Chrome DevTools inspector, but it doesn't appear in the source. For what I hope are obvious reasons, I find this super confusing. What's going on here? (I should also add that the html on this page is pretty malformed).
For example, DevTools shows:
<table>
<tbody>
<tr valign="top">
<td>...</td>
Page source shows:
<table border="0">
<tr valign="top">
<td>
The start tag for <tbody>
is optional. That is, you can leave it out, but it is automatically inserted by the browser whenever needed.
And it is needed, because the rules say you can't have a tr
directly in a table
. The only children of a table
element can be caption
, colgroup
, thead
, tbody
and tfoot
.
So, if the browser encounters a tr
outside a tbody
, it inserts a tbody
which the tr
will reside in.
For a more formal way of saying this, see http://www.w3.org/TR/html-markup/tbody.html
By the way, the very same happens with other start tags, like <body>
. If you omit that, writin, say, a <h1>
directly after the </head>
, the browser will insert an implied <body>
automatically.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With