如何从列数据而不是HTML中的行数据创建表?

Vil*_*age 33 html html-table

根据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>
Run Code Online (Sandbox Code Playgroud)

从上面看,似乎按行输入数据.

我有一种情况需要按列输入所有数据.这样的事情可能吗?

<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>
Run Code Online (Sandbox Code Playgroud)

小智 21

您可以使用表中的表格在列中呈现表格...

<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>
Run Code Online (Sandbox Code Playgroud)

  • 唯一的问题是我们失去了根据内容对齐高度行的好处。 (2认同)

Ahe*_*eho 18

你最好的选择是按行渲染表格,然后使用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);
        });
    });
Run Code Online (Sandbox Code Playgroud)

更新:

这是一个适用于这些元素的版本:http: //jsfiddle.net/zwdLj/


小智 16

在现代浏览器中,您可以通过重新定义CSS中的TR和TD标记行为来实现此目的.鉴于您的问题中的HTML附加下一个CSS样式:

table {
	display: table;
}
table tr {
	display: table-cell;
}
table tr td {
	display: block;
}
Run Code Online (Sandbox Code Playgroud)
<table border="1">
    <tr>
        <td>row 1, cell 1</td>
        <td>row 2, cell 1</td>
    </tr>
    <tr>
        <td>row 1, cell 2</td>
        <td>row 2, cell 2</td>
    </tr>
</table>
Run Code Online (Sandbox Code Playgroud)

  • 我现在发现单元格的高度存在问题。并非新创建的行中的所有单元格都具有相同的高度。 (5认同)
  • 为什么不显示表行而不是显示块? (2认同)