蛇足(無駄)ばっかり
http://oshiete.goo.ne.jp/qa/8437149.html
×すいません
○すみません
<!DOCTYPE html> <meta charset="utf-8"> <title></title> <style> table { width: 100%; } </style> <body> <table> <thead> <tr><th>スレ<th>なまえ<th>新着日時 </thead> <tbody> <tr><td><a href="bbs.php?id=2">ああ</a><td>test1<td>2014/01/31 <tr><td><a href="bbs.php?id=1">いい</a><td>test2<td>2014/01/20 <tr><td><a href="bbs.php?id=2">ああ</a><td>test3<td>2014/01/10 <tr><td><a href="bbs.php?id=2">ああ</a><td>test4<td>2014/01/01 </tbody> </table> <script> function toAry (nodeList) { return Array.prototype.slice.call (nodeList, 0); } function A (idx, direction, samestr) { var func = B (idx, direction); var append = function (n) { this.appendChild (n); } var same = C (idx, samestr || '└'); return function (tbody) { toAry (tbody.querySelectorAll ('tr')) .sort (func) .forEach (append, tbody); toAry (tbody.querySelectorAll ('tr')) .forEach (same); }; } function B (index, direction) { return !! direction ? function (a, b) { var av = a.cells[index].textContent; var bv = b.cells[index].textContent; return (av === bv) ? false : (isNaN (av) || isNaN (bv)) ? av < bv : parseFloat (av) < parseFloat (bv); } : function (a, b) { var av = a.cells[index].textContent; var bv = b.cells[index].textContent; return (av === bv) ? false : (isNaN (av) || isNaN (bv)) ? av > bv : parseFloat (av) > parseFloat (bv); }; } function C (idx, str) { var m = null; return function (tr) { var c = tr.cells[idx]; var t = c.textContent; var e = c.querySelector ('*') || c; e.textContent = (m === t) ? str : (m = t); } } toAry (document.querySelectorAll ('tbody')).forEach (A (0)); </script>