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