代码之家  ›  专栏  ›  技术社区  ›  fire

其他方面的一些关于javascript创建HTML表的帮助

  •  1
  • fire  · 技术社区  · 14 年前

    以下是我写的:

    var data = [["Jan","Feb","Mar"],["5","10","15"]];
    var strTable = '<table>';
    for (var i = 0; i < data.length; i++) {
        strTable += '<tr' + ((i % 2) ? ' class="odd"' : '') + '>';
        for (var j = 0; j < data[i].length; j++) {
            strTable += '<td>' + data[i][j] + '</td>';
        }
        strTable += '</tr>';
    }
    strTable += '</table>';
    

    它产生一张这样的桌子:

    Jan | Feb | Mar
    5   | 10  | 15
    

    但是,我需要改变这一点,使其产生:

    Jan | 5
    Feb | 10
    Mar | 15
    

    我很难改变JavaScript。有人能帮忙吗?

    2 回复  |  直到 14 年前
        1
  •  3
  •   Felix Kling    14 年前

    这里是:

    for (var i = 0; i < data[0].length; i++) { // instead of data.length
        strTable += '<tr' + ((i % 2) ? ' class="odd"' : '') + '>';
        for (var j = 0; j < data.length; j++) {  // instead of data[i].length
            strTable += '<td>' + data[j][i] + '</td>'; // instead of data[i][j]
        }
        strTable += '</tr>';
    }
    

    它获取中第一个子数组的长度 data ,以了解应创建多少行。然后它迭代 数据 创建列。

    只有当所有数组都具有 相同的 大小或第一个数组包含最少的元素。如果您不能保证这一点,一个改进将是首先计算具有最少元素的数组元素的数目。

        2
  •  1
  •   Pointy    14 年前

    我将社区wiki这个,因为它涉及到一个额外的资源,underline.js库:

    data = _.zip.apply(_, data);
    

    这将使“数据”数组侧移,然后您可以继续使用已有的代码。