将多维数组转换为HTML表

时间:2014-05-10 21:30:09

标签: javascript jquery html arrays html-table

玩一个快速的概念。希望答案很简单,我的尝试只是出于某种原因而失败了。

假设我有一个数组如:

var items = [[1,2,3],[4,5,6],[7,8,9],[10,11,12]];

我正试图翻转数据,因此将其转换为:

var items_converted = [[1,4,7,10],[2,5,8,11],[3,6,9,12]];

这已经完成了。现在,使用我的新多维数组,我想将每个内部数组的内容推送到HTML表格行:

<tr>
    <td>1</td>
    <td>4</td>
    <td>7</td>
    <td>10</td>
</tr>
<tr>
    <td>...

在这里播放:http://jsfiddle.net/XDFd2/

我尝试使用两个for-loops,但它似乎没有附加<tr></tr>

var items = [[1,2,3],[4,5,6],[7,8,9],[10,11,12]];
var items_converted = [[1,4,7,10],[2,5,8,11],[3,6,9,12]];
var table = $('#table');

for(var i=0; i<items_converted.length; i++){
        if(i==0){
            table.append('<tr>');
        }
    for(var j=0; j<items_converted[i].length; j++){
        table.append('<td>'+items_converted[i][j]+'</td>');
        if(j===items_converted[0].length-1){
            table.append('</tr');
        }
    }
}

我觉得我在这里缺少一些非常简单的东西......也许是循环处理的顺序?

感谢任何帮助。

在这里播放:http://jsfiddle.net/XDFd2/

1 个答案:

答案 0 :(得分:3)

您尝试使用append()之类的document.write()。这是一个错误的方法。您应该从table节点开始查看DOM,并为每个行和单元追加节点。

基本上$('<tr>')创建一行,然后调用table.append()将其添加到DOM。同样对于细胞。

var items = [[1,2,3],[4,5,6],[7,8,9],[10,11,12]];
var items_converted = [[1,4,7,10],[2,5,8,11],[3,6,9,12]];
var table = $('#table');
var row, cell;

for(var i=0; i<items_converted.length; i++){
     row = $( '<tr />' );
    table.append( row );
    for(var j=0; j<items_converted[i].length; j++){
        cell = $('<td>'+items_converted[i][j]+'</td>')
        row.append( cell );
    }
}

Fiddle