【问题标题】:how to display array values inside <table> tag?如何在 <table> 标签内显示数组值?
【发布时间】:2012-08-24 02:44:07
【问题描述】:

我有这样的数组值。我想在 HTML 表格标签中显示这些值

<script type="text/javascript">
var orderArray = [
    ["1","29-Aug-2012", "Product1", "client1"],
    ["2","29-Aug-2012", "Product2", "client2"],
    ["3","29-Aug-2012", "Product3", "client3"],
    ["4","29-Aug-2012", "Product4", "client4"],
    ["5","29-Aug-2012", "Product5", "client5"]
    ];

function display()
{
    for(i=0;i<ordertArray.length;i++)
    {
    //How to display values of array inside the div or table tag ???
    }
}

</script>


如何在 div 或 table 标签内显示数组的值 ???

【问题讨论】:

  • 您已经有一张桌子还是需要即时创建表格?
  • 我想知道值是如何获取的。无论是手动还是即时。

标签: javascript html


【解决方案1】:

orderArray 的项目代表&lt;tr&gt; 元素,其中的每个项目代表一个&lt;td&gt; 元素。所以你可以循环通过orderArray创建&lt;tr&gt;s,然后在每个循环上循环其元素创建&lt;td&gt;s:http://jsfiddle.net/h7F7e/

var table = document.getElementById("table");  // set this to your table

var tbody = document.createElement("tbody");
table.appendChild(tbody);
orderArray.forEach(function(items) {
  var row = document.createElement("tr");
  items.forEach(function(item) {
    var cell = document.createElement("td");
    cell.textContent = item;
    row.appendChild(cell);
  });
  tbody.appendChild(row);
});

【讨论】:

  • 如何在特定位置的 div 中显示此表格?
  • @Ismail Vitla:我实际上假设您已经有一张桌子。只需在 HTML 中的某处定义表格并设置 var table = ... 以便它引用表格。
  • @Shadow Wizard:谢谢,没意识到。
【解决方案2】:

这样的事情会为你创建一个动态表:

// get handle on div
var container = document.getElementById('container');
// create table element
var table = document.createElement('table');
var tbody = document.createElement('tbody');
// loop array
for (i = 0; i < orderArray.length; i++) {
    // get inner array
    var vals = orderArray[i];
    // create tr element
    var row = document.createElement('tr');
    // loop inner array
    for (var b = 0; b < vals.length; b++) {
        // create td element
        var cell = document.createElement('td');
        // set text
        cell.textContent = vals[b];
        // append td to tr
        row.appendChild(cell);
    }
    //append tr to tbody
    tbody.appendChild(row);
}
// append tbody to table
table.appendChild(tbody);
// append table to container
container.appendChild(table);

使用document.createElement()element.appendChild()

Working example here

【讨论】:

  • 不要将 innerHTML 用于文本值
  • 如何添加具有表格标题的附加行?
  • @ManseUK 如何在此表中附加标题行?
【解决方案3】:

使用table elements的DOM函数:

function display() {
    var table = document.createElement("table");
    for (var i=0; i<orderArray.length; i++) {
        var row = table.insertRow();
        for (var j=0; j<orderArray[i].length; j++) {
            var cell = row.insertCell();
            cell.appendChild(document.createTextNode(orderArray[i][j]));
        }
    }
    return table;
}

当 DOM 准备好时调用该函数,并将返回的表附加到某处。

【讨论】:

  • 完美运行,但我的&lt;td&gt; 之一包含&lt;img&gt;&lt;/img&gt; 显示为原始文本的标签。有没有可能在 HTML 中使用它们?
  • @Florent 如果你有 html 内容(并且正确地被 xss 转义!)而不是文本,不要创建文本节点,而是使用 cell.innerHTML = orderArray[i][j];
【解决方案4】:
var table = "<table>"; // Open Table

for(i=0; i<orderArray.length; i++)
{
 table += "<tr>"; // Open Row

 for(i2=0; i2<orderArray[i].length; i2++) {
 {
  table += "<td>" + orderArray[i][i2] + "</td>"; // Each Column
 }

 table += "</tr>"; // Close Row
}

table += "</table>"; // Close Table 

【讨论】:

  • 您在每个内部循环上添加四个单元格 - 因此每行总共 16 个。
  • 大多数浏览器不支持foreach语法
猜你喜欢
  • 1970-01-01
  • 2016-01-15
  • 2018-06-25
  • 1970-01-01
  • 2021-11-22
  • 2017-06-05
  • 2018-09-12
  • 1970-01-01
  • 2013-07-30
相关资源
最近更新 更多