<div class="gmail_quote">On Fri, Jun 4, 2010 at 1:49 AM, Biju <span dir="ltr"><<a href="mailto:bijumaillist@gmail.com">bijumaillist@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">

There are many cases where we want to sort child nodes of a DOM node.<br>
Many times it is TR nodes of a TBODY<br>
<br>
Right now user writes javascript code to achive that.<br>
Dont you think it is better if there was built DOM method for each node.<br>
Additionally the method will have a sort function parameter to compare elements<br>
the same way as in JavaScript Array.sort(compare_func)<br>
<br>
function compare_func(a,b){<br>
 if(isHeaderRow(a))  return -1;<br>
 if(isHeaderRow(b))  return 1;<br>
 if(a.textContent == b.textContent) return 0;<br>
 if(a.textContent < b.textContent) return -1;<br>
 return 1;<br>
}<br>
tablebody.sortChildNodes(compare_func)<br>
<br>
Use cases:-<br>
Example 1: column sorting in yahoo mail<br>
<br>
Example 2: you can sort this listing by clicking the column headers<br>
<a href="https://bugzilla.mozilla.org/buglist.cgi?short_desc=sort&short_desc_type=allwordssubstr&resolution=---" target="_blank">https://bugzilla.mozilla.org/buglist.cgi?short_desc=sort&short_desc_type=allwordssubstr&resolution=---</a><br>


<br>
Example 2: there are bug report in mozilla asking sorting in XUL grids<br>
<a href="https://bugzilla.mozilla.org/showdependencytree.cgi?id=482890&hide_resolved=1" target="_blank">https://bugzilla.mozilla.org/showdependencytree.cgi?id=482890&hide_resolved=1</a><br>
</blockquote></div><br>This sounds more akin to the thread with the subject line "Adding ECMAScript 5 array extras to HTMLCollection"<div>It's already easy enough to do once you've copied the nodes into an array:</div>

<div><br></div><div>var rowsArray = convertNodeListIntoJSArray(tBody.rows); // assuming you've written such a function</div><div>rowsArray.sort(compare_func);</div><div>tBody.innerHTML = "";</div><div>rowsArray.forEach(function(row) { tBody.appendChild(row) });</div>

<div><br></div><div>I'd rather just see some kind of resolution to mixing in Array methods into the HTMLCollection object.  Since HTMLCollection objects are often 'live' it would just be:</div><div><br></div>
<div>
tBody.rows.sort(compare_func);</div><div><br></div><div>I have no opinion on how Array methods should be mixed into HTMLCollection objects, since the difficulty seems to be more in implementation than devising a web authors' wishlist, but that's what I'd rather see.</div>

<div><br></div><div>-- <br>Jon Barnett<br>
</div>