Цитата:
|
Цитата:
|
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, время: 12:15. |