逐行打印HTML表格而不是逐行打印?

时间:2015-10-05 09:10:29

标签: javascript jquery html-table

我遇到这样的情况:https://jsfiddle.net/ahvonenj/xrrqzypL/

不知道数据数组中是否有偶数或奇数的对象,因此所有这些都是有效的,例如:

var data = 
[
    {
        title: 'Title A',
        content: 'Content A'
    },
    {
        title: 'Title B',
        content: 'Content B'
    },
    {
        title: 'Title C',
        content: 'Content C'
    }
];

var data = 
[
    {
        title: 'Title A',
        content: 'Content A'
    },
    {
        title: 'Title B',
        content: 'Content B'
    }
];

var data = 
[
    {
        title: 'Title A',
        content: 'Content A'
    }
];

最重要的是,必须打印表格,以便每隔一行都有标题,而每隔一行都有内容。为了澄清,我链接的jsfiddle是一个有效的解决方案,但太复杂了。此外,如果数据中有奇数个对象,那么最后的标题和内容单元格不应该像小提琴那样存在。

我的问题是,由于HTML表格的性质,我只知道如何在小提琴中逐行打印它们。我想知道是否有一种合法且简单的方法来逐列打印表格,因为这样可以简化我目前在这里的情况。

为了进一步澄清问题,这就是目前的工作方式:

enter image description here

这就是我喜欢的工作方式:

enter image description here

或简化图片:

enter image description here

正如您所看到的,首选方法看起来更像逻辑和可控制的数据,就像我们在这里一样。那么我们如何以列方式打印HTML表格而不是行方式?

3 个答案:

答案 0 :(得分:2)

您应该使用DIV代替TABLE。您可以使用 float 属性将DIV像TABLE一样浮动。如果您需要任何进一步的帮助,请告诉我。

答案 1 :(得分:0)

逻辑很简单

var insert = '';

var col1 = [];
for(var i = 0; i < data.length/2; i++) {
        col1.push(data[i]);
}
var col2 = [];
for(; i < data.length; i++) {
        col2.push(data[i]);
}


for(var row = 0; row < data.length/2; row++)
{
        var rowHtml = "<tr><td>" + col1[row].title + "</td>";
        if (col2[row]) {
                rowHtml += "<td>" + col2[row].title + "</td>";
        }
        rowHtml += "</tr>";
        rowHtml += "<tr><td>" + col1[row].content + "</td>";
        if (col2[row]) {
                rowHtml += "<td>" + col2[row].content + "</td>";
        }
        rowHtml += "</tr>"
        insert += rowHtml;
}

$('#tbl').append(insert);

我还强烈建议使用DOM(或jQuery API)来构建html而不是字符串连接,因为它的计算效率更高。

答案 2 :(得分:0)

我制作了一个纯CSS解决方案 - ish:http://jsfiddle.net/ahvonenj/L02z8bh3/ 我觉得这样的事就足够了。

我只需将整个桌子翻转90度transform: rotate(90deg);