JavaScript 将 2D 数组打印到 HTML 表格中

标签 javascript html arrays

我正在使用 JavaScript 生成一个 HTML 表格,打印出 2D 数组的元素。我有一个用于创建标题(columnNames)的数组和一个用于打印每行内容的数组(dataArray)。到目前为止我已经:

function addTable(columnNames, dataArray) {

  var x = document.createElement("TABLE");
    x.setAttribute("id", "myTable");
    document.body.appendChild(x);

    var y = document.createElement("TR");
    y.setAttribute("id", "myTr");
    document.getElementById("myTable").appendChild(y);

//add column names

for (i = 0; i < columnNames.length; i++) {

   var th = document.createElement("TH");
    var columns = document.createTextNode(columnNames[i]);
    th.appendChild(columns);
    document.getElementById("myTr").appendChild(th);
}

这给了我一张 table :

enter image description here

但是我现在想循环遍历我的二维数组“dataArray”并将所有内容打印到 12 行中。我有下面的算法,但这仅适用于一行。有人可以帮我吗?

column = 0;

var y2 = document.createElement("TR");
    y2.setAttribute("id", "myTr2");
    document.getElementById("myTable").appendChild(y2);

while(column < 8){
 var th2 = document.createElement("TD");
  var date2 = document.createTextNode(dataArray[0][column]);
  th2.appendChild(date2);
  document.getElementById("myTr2").appendChild(th2);

column++;
}

enter image description here

我知道我错过了某种行循环,但到目前为止已经尝试并错误了许多不同的算法,但没有运气。例如,我想要 12 行。我使用 0 作为第一个数组索引,这样我就可以显示一些内容,但理想情况下 id 希望该值增加到最大数字。

最佳答案

HTML 中的 ids 应该是唯一的,但您对每一行使用相同的 id:myTr2

您已经拥有对新创建的行y2的引用:

y2 = document.createElement("TR");

使用它而不是尝试使用其非唯一的id:

y2.appendChild(th2);

您还可以引用新创建的表:

var x = document.createElement("TABLE");

您可以类似地引用它,而不是像这样引用它的 id:

x.appendChild(y);

在下面的代码片段中,我将变量 x 更改为 myTable,并使用嵌套循环来迭代 dataArray,而不是使用一个变量:

代码片段

function addTable(columnNames, dataArray) {
  var myTable = document.createElement('table');
  
  document.body.appendChild(myTable);

  var y = document.createElement('tr');
  myTable.appendChild(y);

  for(var i = 0; i < columnNames.length; i++) {
    var th = document.createElement('th'),
        columns = document.createTextNode(columnNames[i]);
    th.appendChild(columns);
    y.appendChild(th);
  }

  for(var i = 0 ; i < dataArray.length ; i++) {
    var row= dataArray[i];
    var y2 = document.createElement('tr');
    for(var j = 0 ; j < row.length ; j++) {
      myTable.appendChild(y2);
      var th2 = document.createElement('td');
      var date2 = document.createTextNode(row[j]);
      th2.appendChild(date2);
      y2.appendChild(th2);
    }
  }
} //addTable

addTable(['Date','bbcfour','bbcnews24','bbcone','bbcthree','bbctwo','cbbc','cbeebiese'],
         [['2009-01','324','1075','940','441','1040','898','1343'],
          ['2009-02','524','9075','840','341','1140','398','1323'],
          ['2009-03','224','3075','340','461','1050','828','1345']
         ]
);
table {
  border-collapse: collapse;
}

th, td {
  padding: 0.3em;
  border: 1px solid silver;
}

关于JavaScript 将 2D 数组打印到 HTML 表格中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28657108/

相关文章:

javascript - jquery - 无法为动态创建的元素调用函数

html - 我怎样才能在CSS中制作不透明背景?

c++ - 将指向数组数组的指针传递给函数

javascript - 如何根据一个数组中的值设置复选框选中状态,并在选中时将值添加到另一个数组,否则使用 Angular js 删除?

javascript - 负十进制数和正十进制数的正则表达式

JavaScript 无法在 XAMPP 中运行

javascript - 检查 HTML 文件是否在线或本地文件夹

html - 背景图像缩放代码破坏 html 放置

html - 如何让div显示:none after a css animation that makes it fade away?

ios - 仅在 TableView 的特定单元格上显示和隐藏 View