繁体   English   中英

将桌子旋转 90 度

[英]Rotate a table 90 degrees

我有一个看起来像这样的表:

<table><tbody>
    <tr><td>a</td><td>1</td></tr>
    <tr><td>b</td><td>2</td></tr>
    <tr><td>c</td><td>3</td></tr>
    <tr><td>d</td><td>4</td></tr>
    <tr><td>e</td><td>5</td></tr>
    <tr><td>f</td><td>6</td></tr>
    <tr><td>g</td><td>7</td></tr>
</tbody></table>

我需要它来达到这样的效果:

<table><tbody>
    <tr>
        <td>a</td><td>b</td><td>c</td><td>d</td>
        <td>e</td><td>f</td><td>g</td>
    </tr>
    <tr>
        <td>1</td><td>2</td><td>3</td><td>4</td>
        <td>5</td><td>6</td><td>7</td>
    </tr>
</tbody></table>

例子

我在想这样的事情应该可以工作,但我有点迷茫,我怎么会 go 关于这个:这就是我开始的

为此,我对 Javascript、jQuery 甚至 CSS 持开放态度。

这将交换任何大小 tbody 的行和列,只要行都具有相同数量的单元格。

<!doctype html>
<html lang= "en">
<head>
<meta charset= "utf-8">
<title> Small Test Page</title>
</head>
<body>
<script>
function tableSwap(){
    var t= document.getElementsByTagName('tbody')[0],
    r= t.getElementsByTagName('tr'),
    cols= r.length, rows= r[0].getElementsByTagName('td').length,
    cell, next, tem, i= 0, tbod= document.createElement('tbody');

    while(i<rows){
        cell= 0;
        tem= document.createElement('tr');
        while(cell<cols){
            next= r[cell++].getElementsByTagName('td')[0];
            tem.appendChild(next);
        }
        tbod.appendChild(tem);
        ++i;
    }
    t.parentNode.replaceChild(tbod, t);
}
</script>
<h1> Small Test Page</h1>
<p> <button type= "button" id= "tableSwapBtn" onclick= "tableSwap()"> 
Swap rows and columns</button> </p>
<table style="width:300px;border:1px" rules="all">
<tbody>
<tr> <td> a</td> <td> 1</td> </tr>
<tr> <td> b</td> <td> 2</td> </tr>
<tr> <td> c</td> <td> 3</td> </tr>
<tr> <td> d</td> <td> 4</td> </tr>
<tr> <td> e</td> <td> 5</td> </tr>
<tr> <td> f</td> <td> 6</td> </tr>
<tr> <td> g</td> <td> 7</td> </tr>
</tbody>
</table>
</body>
</html>

这是我的解决方案: http://jsfiddle.net/mtrwk/19/

$('table').each(function() {
    $(this).after("<table><tbody></tbody></table>");
    var newTable = $(this).next("table").children("tbody");
    $(this).children("tbody").children("tr").each(function(rIndex, rItem){
        $(this).children("td").each(function(dIndex, dItem){
            if(newTable.children("tr:eq("+dIndex+")").html() == null){
                newTable.append("<tr></tr>");
            }
            newTable.children("tr:eq("+dIndex+")").append($(this)[0].outerHTML);
        });
    });
});

我有一个 jquery class 可以完成这项任务。 这个 class 也支持表中的 rowspan 和 colspan。

用法很简单:

$('#newtable').tableflip($('#sourcetable'));

这是 class 的代码和示例用法: https://jsfiddle.net/adyhu78/9b1q4ys0/

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM