蛇足(無駄)ばっかり

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>