Sounds like it would be a good habit to use it, period.  I think its time for 
me to actually at least skim through the specs to see what other bad habits I 
learned.
___________________________
Jeffrey Lee
http://www.jeffreyalanlee.com
jlee...@gmail.com




On Feb 16, 2011, at 9:38 , T.J. Crowder wrote:

> Hi,
> 
>> For some reason never learned about the tbody element.  When did
>> that get added to the spec
> 
> Proposed in 1996, standardized in HTML 4.01 in 1999.[1] It's a cool
> element, because amongst other things, you can have more than one of
> them. So if you have a table with rows you want to replace and other
> rows you don't, you can put them in separate TBODYs and group them
> that way.
> 
> AFAIK, it's always been optional (officially optional) in the *markup*
> (it certainly is in HTML5), but that's in the markup; in standards
> mode, browsers have been inserting it in the DOM for you for years.
> For example: http://jsbin.com/urito5 If you run that on IE6, IE7, IE8,
> Chrome, Firefox, or Opera, they'll all say the only child element of
> the TABLE element is a TBODY, although there's no TBODY in the markup.
> 
> Interestingly, HTML5 seems to allow TR to be a direct child of TABLE,
> even in the DOM[2]. That surprises me, I thought it was just in the
> list of elements that an engine was meant to infer.[3] I'm probably
> just misreading the spec. I always explicitly include TBODY if there's
> any chance I'm going to need to manipulate the DOM at the table level,
> just so I know where I am even on "edge" browsers.
> 
> 1: http://www.w3.org/TR/html4/struct/tables.html#edef-TBODY
> 2: http://www.w3.org/TR/html5/tabular-data.html#the-table-element
> 3: http://www.w3.org/TR/html5/syntax.html#optional-tags
> 
> Best,
> --
> T.J. Crowder
> Independent Software Engineer
> tj / crowder software / com
> www / crowder software / com
> 
> On Feb 16, 4:37 pm, Jeffrey Lee <jlee...@gmail.com> wrote:
>> That will teach me to rely on google and random discussions online. :)  I 
>> was suspicious that the <div> was in an awkward location, but hadn't come up 
>> with a good way to replace just the body of the table.  For some reason 
>> never learned about the tbody element.  When did that get added to the spec, 
>> or has that always been there and just not used by hacks like me?  Granted 
>> the last time I spent any energy on creating and editing web pages before 
>> this year was in the late 90's.
>> ___________________________
>> Jeffrey Leehttp://www.jeffreyalanlee.com
>> jlee...@gmail.com
>> 
>> On Feb 16, 2011, at 8:28 , Walter Lee Davis wrote:
>> 
>> 
>> 
>> 
>> 
>> 
>> 
>>> Not in my memory of HTML, which begins in 1997. It's certainly possible to 
>>> put that into a browser and see something. Browsers are designed to ignore 
>>> or coerce invalid code as best they can, to preserve the intent where 
>>> possible. But there's a mile of difference between the JavaScript DOM 
>>> interpreter and the browser's HTML display engine.
>> 
>>> JavaScript doesn't even receive the HTML as written in code from the 
>>> browser when it's constructing its starting DOM tree, it uses the output of 
>>> the browser's first pass at munging the input code stream into shape. This 
>>> is why you can see a big difference between Firebug and view source, for 
>>> example.
>> 
>>> So whenever you are interacting directly with the DOM, as you do in 
>>> Prototype Element#update or anything else that inserts elements into the 
>>> DOM, you are relied on to insert something that makes sense in the context 
>>> where it will be added. If you don't, you get an error or you get ignored.
>> 
>>> One other example of this, directly related to tables: It's perfectly valid 
>>> code to write <table id="foo"><tr><td>Something</td></tr></table>, but it's 
>>> more correct to write <table 
>>> id="foo"><tbody><tr><td>Something</td></tr></tbody></table>. Most browsers 
>>> will silently add that missing intermediate element when the page loads.
>> 
>>> So if you wanted to get a handle on your first row, and you used 
>>> $('foo').childElements()[0] (totally made-up example) then you might 
>>> actually get a reference to the tbody -- the element you didn't actually 
>>> code!
>> 
>>> Now you're probably smarter than that, and you'd write $('foo').down('tr') 
>>> and get what you wanted, but that's just an example to make the point that 
>>> the code you wrote isn't even guaranteed to be the code you're going to be 
>>> talking to when you start messing with the DOM.
>> 
>>> Walter
>> 
>>> On Feb 16, 2011, at 10:15 AM, Jeffrey Lee wrote:
>> 
>>>> Shows how outdated my HTML is.  Thanks for the pointer.  Its funny, when I 
>>>> was googling around apparently once upon a time it was at least tolerated, 
>>>> if not officially acceptable, to have <div> as a child of table.
>>>> ___________________________
>>>> Jeffrey Lee
>>>> http://www.jeffreyalanlee.com
>>>> jlee...@gmail.com
>> 
>>>> On Feb 15, 2011, at 23:20 , T.J. Crowder wrote:
>> 
>>>>> Hi,
>> 
>>>>> That HTML is invalid. You can't have a `div` as a child of `table`:
>>>>> http://www.w3.org/TR/html5/tabular-data.html#the-table-element
>> 
>>>>> If you want to subdivide a table like that, you probably want `thead`
>>>>> (for your headers) and one or more `tbody` elements:
>> 
>>>>> <table>
>>>>> <thead>
>>>>>  <tr>
>>>>>    <th>Item</th>
>>>>>     <th>Transaction Type</th>
>>>>>     <th>Quantity</th>
>>>>>    <th>Amount</th>
>>>>>     <th>Transaction comments</th>
>>>>>  </tr>
>>>>> </thead>
>>>>> <tbody id = "transList">
>>>>>  <tr>
>>>>>    <<bunch of table data>>
>>>>>  </tr>
>>>>>  <tr>
>>>>>    <<bunch of table data>>
>>>>>  </tr><tr>
>>>>>     <<bunch of table data>>
>>>>>  </tr>
>>>>> </tbody>
>>>>> </table>
>> 
>>>>> ...and then your update will have to be valid `tbody` content (e.g.,
>>>>> rows).
>> 
>>>>> Example:
>>>>> http://jsbin.com/evuxe3
>> 
>>>>> HTH,
>>>>> --
>>>>> T.J. Crowder
>>>>> Independent Software Engineer
>>>>> tj / crowder software / com
>>>>> www / crowder software / com
>> 
>>>>> On Feb 15, 10:59 pm, Jeff <jlee...@gmail.com> wrote:
>>>>>> This is a rails generated webpage.  I've created a table definition as
>>>>>> follows:
>> 
>>>>>> <table>
>>>>>> <tr>
>>>>>>   <th>Item</th>
>>>>>>   <th>Transaction Type</th>
>>>>>>   <th>Quantity</th>
>>>>>>   <th>Amount</th>
>>>>>>   <th>Transaction comments</th>
>>>>>> </tr>
>> 
>>>>>> <div id = "transList">
>>>>>> <tr>
>>>>>>  <<bunch of table data>>
>>>>>> </tr><tr>
>>>>>>  <<bunch of table data>>
>>>>>> </tr><tr>
>>>>>>   <<bunch of table data>>
>>>>>> </tr>
>>>>>> </div>
>>>>>> </table>
>> 
>>>>>> If I execute a $('transList').update('Test') or frankly any other text
>>>>>> or html, the existing table data remains, and the updated text is
>>>>>> placed above the entire table.  However, if I do a view - >source,
>>>>>> this new data doesn't show up in the page source at all, only the old
>>>>>> table data.
>> 
>>>>>> I'm having this problem in both Safari and Firefox.  Any suggestions?
>> 
>>>>> --
>>>>> You received this message because you are subscribed to the Google Groups 
>>>>> "Prototype & script.aculo.us" group.
>>>>> To post to this group, send email to 
>>>>> prototype-scriptaculous@googlegroups.com.
>>>>> To unsubscribe from this group, send email to 
>>>>> prototype-scriptaculous+unsubscr...@googlegroups.com.
>>>>> For more options, visit this group 
>>>>> athttp://groups.google.com/group/prototype-scriptaculous?hl=en.
>> 
>>>> --
>>>> You received this message because you are subscribed to the Google Groups 
>>>> "Prototype & script.aculo.us" group.
>>>> To post to this group, send email to 
>>>> prototype-scriptaculous@googlegroups.com.
>>>> To unsubscribe from this group, send email to 
>>>> prototype-scriptaculous+unsubscr...@googlegroups.com.
>>>> For more options, visit this group 
>>>> athttp://groups.google.com/group/prototype-scriptaculous?hl=en.
>> 
>>> --
>>> You received this message because you are subscribed to the Google Groups 
>>> "Prototype & script.aculo.us" group.
>>> To post to this group, send email to 
>>> prototype-scriptaculous@googlegroups.com.
>>> To unsubscribe from this group, send email to 
>>> prototype-scriptaculous+unsubscr...@googlegroups.com.
>>> For more options, visit this group 
>>> athttp://groups.google.com/group/prototype-scriptaculous?hl=en.
> 
> -- 
> You received this message because you are subscribed to the Google Groups 
> "Prototype & script.aculo.us" group.
> To post to this group, send email to prototype-scriptaculous@googlegroups.com.
> To unsubscribe from this group, send email to 
> prototype-scriptaculous+unsubscr...@googlegroups.com.
> For more options, visit this group at 
> http://groups.google.com/group/prototype-scriptaculous?hl=en.
> 

-- 
You received this message because you are subscribed to the Google Groups 
"Prototype & script.aculo.us" group.
To post to this group, send email to prototype-scriptaculous@googlegroups.com.
To unsubscribe from this group, send email to 
prototype-scriptaculous+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/prototype-scriptaculous?hl=en.

Reply via email to