Форум АНТИЧАТ

Форум АНТИЧАТ (https://forum.antichat.xyz/index.php)
-   PHP, PERL, MySQL, JavaScript (https://forum.antichat.xyz/forumdisplay.php?f=37)
-   -   сортировка tbodies (https://forum.antichat.xyz/showthread.php?t=71406)

байкал 25.05.2008 08:44

сортировка tbodies
 
Мне надо сортировать таблицу, разделённую на tbodies. Например,

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

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

astrologer 25.05.2008 12:53

Код:

<script type="text/javascript">

function swap(a,b)
{
  return [
    a.parentNode.replaceChild(b.cloneNode(true), a),
    b.parentNode.replaceChild(a.cloneNode(true), b)
  ];
}

</script>


байкал 27.05.2008 05:24

Спасибо. Только почему-то не работает.

Код:

<!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>


Naydav 27.05.2008 13:10

У тебя ссылка должна false возврвщать! Это означает, что мы отменяем действие по умолчанию
А то скрипт срабатывает(меняет местами строки), при нажатии на ссылку, а потом ты опять переходишь по ссылке(ты же ведь ее нажал) на эту же на эту страницу в изначальном виде, нужно отменить этот переход

замени ссылку на
Цитата:

<a href="javascript:void(0)" onclick="sort()">SORT</a>
можно и
Цитата:

<a href="javascript:sort(); void(0);">SORT</a>
или
Цитата:

<a href="javascript:sort()">SORT</a>
если sort возвращает false
Прям полет фантазии :)

astrologer 27.05.2008 13:43

Цитата:

Сообщение от Naydav
или
Код:

<a href="javascript:sort()">SORT</a>
если sort возвращает false
Прям полет фантазии :)

Если последнее выражение возвращает любое значение, отличное от void undefined, то на странице появляется строка, полученная в результате приведения этого значения к строковому типу.

Naydav 27.05.2008 14:06

Цитата:

Если последнее выражение возвращает любое значение, отличное от void undefined, то на странице появляется строка, полученная в результате приведения этого значения к строковому типу.
верно :)
ну тогда меняем этот вариант на
Цитата:

<a href="#" onclick="sort()">SORT</a>

байкал 28.05.2008 05:28

Спасибо, всё работает.


Время: 04:50