2012-07-07 79 views
0

使用JS带有数据的HTML表我有数据阵列已经收集通过现有表迭代这样:填充顺序错误

--------------- 
    Mon | Hot | 12 
    --------------- 
    Tue | Cold | -2 
    --------------- 
    Wed | Warm | 3 
    --------------- 
    Thu | Cold | -4 
    --------------- 
    Fri | Cold | -3 
    --------------- 

在数组中的数据被存储为,例如: ['Mon','Hot','12','Tue','Cold','-2'..等等。]

现在需要将数据显示在翻转行的表中数据显示如下:

Mon | Tue | Wed | Thu | Fri 
------------------------------- 
Hot | Cold | Warm | Cold | Cold 
------------------------------- 
12 | -2 | 2 | -4 | -3 

我正在努力寻找正确的循环语句来正确打印数据。

到目前为止,我有以下几点:

for (i = 0; i < weather_data.length; i++) 
{               
    if (i%5==0) 
    { 
     table.push('<tr><td>'+weather_data[i*3]+'</td>'); 
    } 
    else if(i%4==0) 
    { 
     table.push('<td>'+weather_data[i*3]+'</td></tr>'); 
    } 
    else 
    { 
     table.push('<td>'+weather_data[i*3]+'</td>'); 
    } 
} 

哪个正确显示顶线,但其余的都是不确定的,因为所谓的指标是明显的阵列过大。我已经计算出第二行需要调用以下索引:((index-5)*3)+1,但第三行也需要一个不同的索引调用。必须有一个方程适用于所有行...这必须是一个公平的共同操作!

得到的表需要显示以下顺序索引:为了

0 3 6 9 12 
1 4 7 10 13 
2 5 8 11 14 

所以循环需要产生这些的左到右,再下一行等

〜它还需要分别添加必要的起始<tr></tr>标签。

谢谢。

+0

你对jsfiddle有这个吗? – 2012-07-07 19:25:05

+0

我不怕,实际的网站是私人的,功能取决于众多AJAX调用的结果,加上我以前从未使用过jsfiddle,并且需要很长时间才能设置它,道歉。尽管如此,我将学习如何使用它。 – Alex 2012-07-07 19:28:37

+0

你不需要把整个页面放在jsfiddle上。只是代表你的逻辑的东西。 – 2012-07-07 19:31:37

回答

3
var data = ['Mon', 'Hot', '12', 'Tue', 'Cold', '-2', 
      'Wed', 'Warm', '3', 'Thu', 'Cold', '-4']; 
var width = 3; 
var height = data.length/width; 
var r = ""; 
for(var i = 0; i < width; i++) { 
    var row = []; 
    for(var j = 0; j < height; j++) { 
    row.push("<td>" + data[j * width + i] + "</td>"); 
    } 
    r += "<tr>" + row.join("") + "</tr>"; 
} 

$("#container_id").html("<table>" + r + "</table>"); 
+0

非常感谢,完美! – Alex 2012-07-07 19:42:27