У меня есть сложный HTML-стол с горизонтальными и вертикальными заголовками, похожими на этот.JavaScript/JQuery своп горизонтальный и вертикальный порядок таблицы HTML
HTML-код прост:
<table>
<tr>
<th>(empty)</th>
<th>Heading 1</th>
<th>Heading 2</th>
</tr>
<tr>
<th>Heading A</th>
<td>content for 1 and A</td>
<td>content for 2 and A</td>
</tr>
<tr>
<th>Heading B</th>
<td>content for 1 and B</td>
<td>content for 2 and B</td>
</tr>
<tr>
<th>Heading C</th>
<td>content for 1 and C</td>
<td>content for 2 and C</td>
</tr>
</table>
Теперь я хочу, чтобы дать пользователям моего сайта возможность поменять содержимое таблицы. I.e: измените горизонтальный и вертикальный порядок, чтобы затем вертикальные заголовки были горизонтальными, горизонтальные заголовки вертикальны и ячейки таблицы соответственно. Звучит сложно, но вы получите его, глядя на картину:
HTML-бы сейчас:
<table>
<tr>
<th>(empty)</th>
<th>Heading A</th>
<th>Heading B</th>
<th>Heading C</th>
</tr>
<tr>
<th>Heading 1</th>
<td>content for 1 and A</td>
<td>content for 1 and B</td>
<td>content for 1 and C</td>
</tr>
<tr>
<th>Heading 2</th>
<td>content for 2 and A</td>
<td>content for 2 and B</td>
<td>content for 2 and C</td>
</tr>
</table>
Технически говоря, Иви ячейки таблицы (th
и td
) должен поменять его индексы: индекс столбца должен стать индексом строки, а индекс столбца должен быть индексом rown. Но как мне это сделать с помощью JavaScript и JQuery?
я уже выяснил, как получить строки и столбца индекса:
//column
$(this).parent().children().index(this);
//row
$(this).parent().parent().children().index(this.parentNode);
Но нет, кажется, ни одна функция JQuery для «позиции установить ячейки таблицы», есть только .inserAfter
и если честно, я не знаю, как справиться с этим.
Нормальное слово для этой операции над массивом - «транспонирование». Поиск этого может дать ответы. – Alnitak