Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   Jquery - поменять местами таблицы (https://javascript.ru/forum/jquery/54265-jquery-pomenyat-mestami-tablicy.html)

Sergei-b84 11.03.2015 11:50

Jquery - поменять местами таблицы
 
Привет всем! Подскажите, как при помощи jQuery поменять местами две таблицы при перезагрузке странице, но чтобы это не было заметно для глаза. Вот код:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<script type="text/javascript" src="jquery-1.2.6.js" ></script>

</head>
<body class="body">

  <table id="table_up" class="table">
   <caption>Basic Table UP</caption>
   <thead>
      <tr class="success">
         <th>Name</th>
         <th>City</th>
      </tr>
   </thead>
   <tbody>
      <tr>
         <td>Tanmay</td>
         <td>Bangalore</td>
      </tr>
      <tr>
         <td>Sachin</td>
         <td>Mumbai</td>
      </tr>
   </tbody>
</table>




  <table id="table_down" class="table">
   <caption>Basic Table Down</caption>
   <thead>
      <tr>
         <th>Name</th>
         <th>City</th>
      </tr>
   </thead>
   <tbody>
      <tr>
         <td>Tanmay</td>
         <td>Bangalore</td>
      </tr>
      <tr>
         <td>Sachin</td>
         <td>Mumbai</td>
      </tr>
   </tbody>
</table>
</body>
</html>


Всем спасибо.

laimas 11.03.2015 12:11

Подскажите, как при помощи jQuery поменять местами две таблицы при перезагрузке странице

А север этого не в состоянии сделать?

Sergei-b84 11.03.2015 12:17

Нужно при помощи jQuery, причем никаких click(function() быть не должно, просто нажал F5, таблица которая была снизу стала сверху и так циклично.

dd_smol 11.03.2015 12:22

Повести флажок в Куки и перезаписывайте его при загрузке страницы. И на основе этого флажка чередуйте свои таблицы.

laimas 11.03.2015 12:23

Ну что же, давайте разбираться.

1) да не проблема поменять таблицы местами на клиенте, но

2) таблицы вам отдает сервер, а это означает следующее:

а) первый запрос страницы, сперва выводится таблица А, за ней таблица Б

б) клиент меняет их порядок с Б на А

в) F5

г) сервер опять выводит А первой, Б второй

д) клиент меняет порядок на Б первая, А вторая

Вопрос - а нафига нужны эти пятнашки, если сервер может сразу выводить первой таблицу Б, а второй А? Ведь по тому что вы пишите - сервер по-боку, а значит о чехарде на клиенте не ведает, получается бесполезное занятие.

Sergei-b84 11.03.2015 12:28

Да это все понятно. Мне просто такое задание дали в универе. Вот сижу и думаю как решить. Полагаю практического значения навряд ли есть у этой задачи. Вот сам текст: У Вас есть веб страница, на которой расположены две таблицы одна под другой. Ваша задача – поменять эти таблицы местами с помощью jQuery (и при необходимости CSS) после загрузки всей страницы, но так, чтобы пользователь не видел мельканий при загрузке страницы. То есть вариант, когда сначала пользователь видит таблицу Б под таблицей А, а после загрузки они на его глазах меняются местами, не подходит.

laimas 11.03.2015 12:35

Решить это задание без сервер нельзя, если конечно ваше задание не абстрактное, и подразумевает, что-то нечто, бог знает что, порождает у вас эту страницу, и тогда на клиенте используете куки. Но если веб страница, значит подразумевается сервер удаленный, а это означает, что куки должен устанавливать он, а если не важно время, и подразумевается работа на период сессии, то и кук не надо, хватит и флага в сессии.

Именно на jQuery или на JS поменять местами, так это это у ваших кураторов просто не хватает или мозгов, или фантазии на содержание задач, потому как это как раз удобнее сделать серверу.

Sergei-b84 11.03.2015 12:42

Спасибо. Буду думать.

Sergei-b84 11.03.2015 13:21

Цитата:

Сообщение от laimas (Сообщение 360661)
Ну что же, давайте разбираться.

1) да не проблема поменять таблицы местами на клиенте, но

А не подскажите как это делать?

laimas 11.03.2015 13:46

На jQuery просто:

$('#table_down').after('#table_up')


но... читайте выше, и если это в контексте веб, то что за тараканы в головах ваших кураторов я не знаю.

рони 11.03.2015 16:37

table reverse localStorage
 
Sergei-b84,
:-?
<!DOCTYPE HTML>

<html>

<head>
  <title>Untitled</title>
  <meta charset="utf-8">
<style type="text/css">
    table {
      display: none;
    }
    #table_up{
      background: #339900
    }
    #table_down{
      background: #FF6666
    }

</style>
  <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script>
  <script>
     $(function(){
    var table = $('#table_up, #table_down'), f = localStorage.getItem('f')||'';
    function show()
    {
    $(table[+!f]).insertAfter(table[+f])
    table.show();
    };
    $('button').click(function(e) {
    f  =  f ? '' : '1';
    show();
    localStorage.setItem('f', f);
});
    show() ;
});


  </script>
</head>

<body>
<table id="table_up" class="table">
   <caption>Basic Table UP</caption>
   <thead>
      <tr class="success">
         <th>Name</th>
         <th>City</th>
      </tr>
   </thead>
   <tbody>
      <tr>
         <td>Tanmay</td>
         <td>Bangalore</td>
      </tr>
      <tr>
         <td>Sachin</td>
         <td>Mumbai</td>
      </tr>
   </tbody>
</table>




  <table id="table_down" class="table">
   <caption>Basic Table Down</caption>
   <thead>
      <tr>
         <th>Name</th>
         <th>City</th>
      </tr>
   </thead>
   <tbody>
      <tr>
         <td>Tanmay</td>
         <td>Bangalore</td>
      </tr>
      <tr>
         <td>Sachin</td>
         <td>Mumbai</td>
      </tr>
   </tbody>
</table>
<button>table reverse</button>

</body>

</html>

laimas 11.03.2015 17:24

f = f ? '' : '1';

а не проще f ^=1 ?

рони 11.03.2015 17:34

:write: jQuery тут конечно нафиг
<!DOCTYPE HTML>

<html>

<head>
  <title>Untitled</title>
  <meta charset="utf-8">
<style type="text/css">
    table {
      display: none;
    }
    #table_up{
      background: #339900
    }
    #table_down{
      background: #FF6666
    }
    .show table {
      display:   table;
    }
</style>

  <script>
    window.onload = function() {
    var table = document.querySelectorAll("#table_up, #table_down"),
        button = document.querySelector("button"),
        parent = document.body,
        f = +localStorage.getItem("f") || 0;

    function show() {
        parent.insertBefore(table[+!f], table[f]);
        parent.classList.add("show")
    }
    button.onclick = function() {
        f ^= 1;
        show();
        localStorage.setItem("f", f)
    };
    show()
};
  </script>
</head>

<body>
<table id="table_up" class="table">
   <caption>Basic Table UP</caption>
   <thead>
      <tr class="success">
         <th>Name</th>
         <th>City</th>
      </tr>
   </thead>
   <tbody>
      <tr>
         <td>Tanmay</td>
         <td>Bangalore</td>
      </tr>
      <tr>
         <td>Sachin</td>
         <td>Mumbai</td>
      </tr>
   </tbody>
</table>




  <table id="table_down" class="table">
   <caption>Basic Table Down</caption>
   <thead>
      <tr>
         <th>Name</th>
         <th>City</th>
      </tr>
   </thead>
   <tbody>
      <tr>
         <td>Tanmay</td>
         <td>Bangalore</td>
      </tr>
      <tr>
         <td>Sachin</td>
         <td>Mumbai</td>
      </tr>
   </tbody>
</table>
<button>table reverse</button>

</body>

</html>

рони 11.03.2015 17:39

Цитата:

Сообщение от laimas
а не проще f ^=1 ?

добавил
и изменил
Цитата:

Сообщение от рони
f = +localStorage.getItem("f") || 0;


laimas 11.03.2015 20:00

jQuery тут конечно нафиг

Так по условию тараканов именно на ней должно быть решение, иначе очередной студент не получит диплома :)


Часовой пояс GMT +3, время: 03:27.