2015-10-05 131 views
0

我有这样的情况:https://jsfiddle.net/ahvonenj/xrrqzypL/逐列打印HTML表格而不是逐行打印?

它是未知的磨过或没有数据阵列具有偶数或奇数数量在它的对象,因此,所有的这些都是有效的,例如:

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表格,而不是行式?

回答

2

您应该使用DIV而不是TABLE。您可以使用float属性浮动DIV如TABLE。让我知道你是否需要任何进一步的帮助。

+0

我特别想用一个表,并找到一种方法来建立它列逐列。问题不在于如何用div或其他方式来做到这一点,我想找到一种方法来使用逐列构建的表格。 – Piwwoli

+0

在js上取多个变量,需要特殊变量的连字号​​,然后在需要时将其组合在一起。您需要实现一些复杂的自定义逻辑。没有其他的。 – DSA

+0

是否库的存在,让我输入类似'

​​一个​​b
'并将它建表就像对待标签,但与列? – Piwwoli

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,因为它是更计算机效率。

+0

我希望有一些东西可以让我构建表格,比如''(表列)标签而不是行标签。这样'''和''标签实际上可以实时更改。 – Piwwoli

+0

表的逻辑是逐行的,这是因为每一行的所有列的高度始终相同。没有像这样的事实,没有人需要它。 – netoctone