2012-07-07 90 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