Как создать таблицы из данных столбцов вместо данных строки в HTML?
Согласно этой статье в W3 Schools, можно создать базовую таблицу в формате HTML следующим образом:
<table border="1">
<tr>
<td>row 1, cell 1</td>
<td>row 1, cell 2</td>
</tr>
<tr>
<td>row 2, cell 1</td>
<td>row 2, cell 2</td>
</tr>
</table>
Сверху, кажется, что каждый вводит данные по строкам.
У меня есть ситуация, когда мне нужно вводить все данные по столбцам. Возможно ли подобное?
<table border="1">
<tc>
<td>row 1, cell 1</td>
<td>row 2, cell 1</td>
</tc>
<tc>
<td>row 1, cell 2</td>
<td>row 2, cell 2</td>
</tc>
</table>
Ответы
Ответ 1
Лучше всего отображать таблицу по строкам, а затем использовать javascript для инверсии таблицы
http://jsfiddle.net/CsgK9/2/
Следующий код инвертирует таблицу (этот пример кода использует jquery)
$("table").each(function() {
var $this = $(this);
var newrows = [];
$this.find("tr").each(function(){
var i = 0;
$(this).find("td").each(function(){
i++;
if(newrows[i] === undefined) { newrows[i] = $(""); }
newrows[i].append($(this));
});
});
$this.find("tr").remove();
$.each(newrows, function(){
$this.append(this);
});
});
UPDATE:
Вот версия, которая также работает с элементами th:
http://jsfiddle.net/zwdLj/
Ответ 2
Вы можете отображать таблицы в столбцах, используя таблицу в таблице...
<table>
<tr>
<td>
<table>
<thead>
<tr>
<td>column 1 header 1</td>
</tr>
</thead>
<tbody>
<tr>
<td>column 1 row 1</td>
</tr>
<tr>
<td>column 1 row 2</td>
</tr>
</tbody>
</table>
</td>
<td>
<table>
<thead>
<tr>
<td>column 2 header 1</td>
</tr>
</thead>
<tbody>
<tr>
<td>column 2 row 1</td>
</tr>
<tr>
<td>column 2 row 2</td>
</tr>
</tbody>
</table>
</td>
</tr>
</table>
Ответ 3
Нет, это невозможно в HTML.
Ответ 4
Я был в той же ситуации, когда мне нужно добавить данные по столбцу. Но эта проблема решается простым методом. Я использовал ветку в этом примере, но вы легко ее получите.
<table>
<tr>
<th>id</th>
<th>title</th>
<th>ISBN</th>
<th>author_id</th>
<th>publisher_id</th>
</tr>
{% for book in books %} //for loop is used before the <tr> tag
<tr>
<td>{{ book.id }}</td>
<td>{{ book.title }}</td>
<td>{{ book.isbn }}</td>
<td>{{ book.publisher.id }}</td>
<td>{{ book.author.id }}</td>
{% endfor %}
</tr>
Примечание: {{это данные для печати}}
Ответ 5
Просто сделал это, используя пучок uls, заполненный lis, казался намного более чистым, чем все, что я мог найти. Вам нужно будет сделать что-то вроде добавления класса ко всем uls и установки его стиля для отображения: inline-table.
@* pseudo html/razor *@
@foreach(var col in columns){
<ul class='tableColumn'>
foreach(var data in col){
<li>data</li>
}
</ul>
}
и некоторый стиль
.tableColumn {
border: 1px solid;
display: inline-table;
}