сортировка tbodies

Discussion in 'PHP' started by байкал, 25 May 2008.

  1. байкал

    байкал New Member

    Joined:
    1 Aug 2007
    Messages:
    24
    Likes Received:
    0
    Reputations:
    0
    Мне надо сортировать таблицу, разделённую на tbodies. Например,

    ----------------------------
    tbody A column total
    ....
    ....
    ----------------------------
    tbody B column total
    ....
    ....
    ....
    ....
    ----------------------------

    Как можно поменять tbody A и tbody B местами? Сложность в том, что они могут быть разного формата.
     
  2. astrologer

    astrologer Elder - Старейшина

    Joined:
    30 Aug 2007
    Messages:
    837
    Likes Received:
    267
    Reputations:
    59
    Code:
    <script type="text/javascript">
    
    function swap(a,b)
    {
      return [
        a.parentNode.replaceChild(b.cloneNode(true), a),
        b.parentNode.replaceChild(a.cloneNode(true), b)
      ];
    }
    
    </script>
     
  3. байкал

    байкал New Member

    Joined:
    1 Aug 2007
    Messages:
    24
    Likes Received:
    0
    Reputations:
    0
    Спасибо. Только почему-то не работает.

    Code:
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
      <head>
        <meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
        <title>Test</title>
        <style type="text/css">
          body { font-family: arial, sans-serif; }
          h1, h2 { font-family: sans; }
          dt { display: block; float: left; clear: both; width: 100px; text-align: right; margin: 0 8px 0 0; }
        </style>
      </head>
      <body>
        <table id="sortTest">
          <tbody>
            <tr><th>tbody A <a href="" onclick="sort()">SORT</a></th><th>column total</th></tr>
            <tr><td></td><td>cell 1</td></tr>
            <tr><td></td><td>cell 2</td></tr>
          </tbody>
          <tbody>
            <tr><th>tbody B</th><th>column total</th></tr>
            <tr><td></td><td>cell 1</td></tr>
            <tr><td></td><td>cell 2</td></tr>
            <tr><td></td><td>cell 3</td></tr>
            <tr><td></td><td>cell 4</td></tr>
          </tbody>
        </table>
        <script type="text/javascript">
    	function sort()
    	{
          var tblSortTest = document.getElementById('sortTest');
          var tBodies = tblSortTest.getElementsByTagName("tbody");
          swap( tBodies[1], tBodies[0] );
    	}
    	function swap(a,b)
        { 
         return [
            a.parentNode.replaceChild(b.cloneNode(true), a),
           b.parentNode.replaceChild(a.cloneNode(true), b)
           ];
    	}
        </script>
      </body>
    </html>
    
     
  4. Naydav

    Naydav Elder - Старейшина

    Joined:
    30 Dec 2006
    Messages:
    439
    Likes Received:
    63
    Reputations:
    4
    У тебя ссылка должна false возврвщать! Это означает, что мы отменяем действие по умолчанию
    А то скрипт срабатывает(меняет местами строки), при нажатии на ссылку, а потом ты опять переходишь по ссылке(ты же ведь ее нажал) на эту же на эту страницу в изначальном виде, нужно отменить этот переход

    замени ссылку на
    можно и
    или
    если sort возвращает false
    Прям полет фантазии :)
     
    #4 Naydav, 27 May 2008
    Last edited: 27 May 2008
  5. astrologer

    astrologer Elder - Старейшина

    Joined:
    30 Aug 2007
    Messages:
    837
    Likes Received:
    267
    Reputations:
    59
    Если последнее выражение возвращает любое значение, отличное от void undefined, то на странице появляется строка, полученная в результате приведения этого значения к строковому типу.
     
    1 person likes this.
  6. Naydav

    Naydav Elder - Старейшина

    Joined:
    30 Dec 2006
    Messages:
    439
    Likes Received:
    63
    Reputations:
    4
    верно :)
    ну тогда меняем этот вариант на
     
    #6 Naydav, 27 May 2008
    Last edited: 27 May 2008
  7. байкал

    байкал New Member

    Joined:
    1 Aug 2007
    Messages:
    24
    Likes Received:
    0
    Reputations:
    0
    Спасибо, всё работает.
     
    #7 байкал, 28 May 2008
    Last edited: 28 May 2008