Цитата:
|
Цитата:
|
j0hnik,
танцы с бубном, но работает ... :) <!DOCTYPE HTML> <html> <head><meta charset="utf-8"> <title>title</title> </head> <body> <table> <tr><td>1<td>2<td>3 <tr><td>4<td>5<td>6 <tr><td>7<td>8<td>9 </table> ___________________________________ <table> <tr><td>1<td>2<td>3 <tr><td>4<td>5<td>6 </table> ___________________________________ <table> <tr><td>1<td>2 <tr><td>3<td>4 <tr><td>5<td>6 <tr><td>7<td>8 </table> <button>Клик</button> <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script> <script> var n = 1; $('button').click(function(){ n ^= 1; $("table").each(function(){ var trs = $(this).find("tr"); var tds = $(this).find("td"); var t = trs.length; var l = n ? tds.length/t : 1; for (var k=0; k<l; k++) { tds.each(function(i){ i = i % t; trs.eq(i%t).append(this); }); tds = $(this).find("td"); } }); }); </script> </body> </html> |
|
nerv_,
немного не походит, меня интересует вариант с сохранением количества строк и колонок. есть ли какая то функция, сделать тоже самое что в посте №13, но без for. |
извините за вторжение :)
есть вопрос по коду <script> document.querySelectorAll("table").forEach(table=>{ var trs = table.querySelectorAll("tr"); var tds = table.querySelectorAll("td"); var t = trs.length; tds.forEach((td,i) => trs[i%t].append(td)); }) а именно по вот этой строчке: tds.forEach((td,i) => trs[i%t].append(td)) мы перебираем все ТДшки и далее возвращаем в ТРшки новые ТДшки, допустим в примере у нас <table> <tr> <td>1</td> <td>2</td> </tr> <tr> <td>3</td> <td>4</td> </tr> <tr> <td>5</td> <td>6</td> </tr> <tr> <td>7</td> <td>8</td> </tr> <tr> <td>9</td> <td>10</td> </tr> </table> 5 строк и 2 столбца, итого 10 элементов. td = 10, i = 5 ? как это происходит ? tds((1,1) => trs[1%1].append(td)) - для первой ТДшки tds((7,4) => trs[7%4].append(td)) - для седьмой ТДшки tds((8,4) => trs[8%4].append(td)) - для восьмой ТДшки Первую брать смысла нету, возьму седьмую, tds((7,4) => trs[7%4].append(td)) trs[7%4] - остаток есть - три, и типа в третью строчку вставляется седьмая ТДшка ? что-то не сходится у меня :write: Для восьмой: tds((8,4) => trs[8%4].append(td)) trs[8%4] - остатка нет .... |
shoopik,
для первой ТДшки trs[0%5] = tr[0] для седьмой ТДшки trs[6%5] = tr[1] для восьмой ТДшки trs[7%5] = tr[2] <table> <tr> <td>1</td> <td>2</td> </tr> <tr> <td>3</td> <td>4</td> </tr> <tr> <td>5</td> <td>6</td> </tr> <tr> <td>7</td> <td>8</td> </tr> <tr> <td>9</td> <td>10</td> </tr> </table> <table> <tbody><tr> <td>1</td><td>6</td></tr> <tr> <td>2</td><td>7</td></tr> <tr> <td>3</td><td>8</td></tr> <tr> <td>4</td><td>9</td></tr> <tr> <td>5</td><td>10</td></tr> </tbody></table> |
Цитата:
для второй trs[1%5] = tr[0] - непонято, что здесь для третьей trs[2%5] = tr[0] - непонято, что здесь для четвертой trs[3%5] = tr[0] - непонято, что здесь для пятой trs[4%5] = tr[0] - непонято, что здесь для шестой trs[5%5] = tr[0] - непонято, что здесь для седьмой ТДшки trs[6%5] = tr[1] - т.е. она просто вставляется во второй столбик, потому что первый занят уже, если я правильно понял, также и в восьмой. для восьмой ТДшки trs[7%5] = tr[2] |
shoopik,
условно tr[0] строка с индексом ноль или первая строка tr[1] строка с индексом один или вторая строка |
Цитата:
1 2 3 4 5 6 7 8 9 10 для второй trs[1%5] = tr[0] - для третьей trs[2%5] = tr[0] - для четвертой trs[3%5] = tr[0] - для пятой trs[4%5] = tr[0] - для шестой trs[5%5] = tr[0] - |
Часовой пояс GMT +3, время: 10:00. |