如何将包含HTML元素的数组转换为Javascript中的表?

如何将包含HTML元素的数组转换为Javascript中的表?,javascript,html,Javascript,Html,我有一个数组,其中包含HTML元素,如 你能告诉我在我的表格中显示HTML元素应该怎么做吗 var orderArray=[ [“1”、“2012年8月29日”、“产品1”、“客户1”], [“2”、“2012年8月29日”、“产品2”、“客户2”], [“3”、“2012年8月29日”、“产品3”、“客户3”], [“4”、“2012年8月29日”、“客户4”], [“5”、“2012年8月29日”、“产品5”、“客户5”] ]; 函数显示(){ //处理div var table=doc

我有一个数组,其中包含HTML元素,如

你能告诉我在我的表格中显示HTML元素应该怎么做吗

var orderArray=[
[“1”、“2012年8月29日”、“产品1”、“客户1”],
[“2”、“2012年8月29日”、“产品2”、“客户2”],
[“3”、“2012年8月29日”、“产品3”、“客户3”],
[“4”、“2012年8月29日”、“客户4”],
[“5”、“2012年8月29日”、“产品5”、“客户5”]
];
函数显示(){
//处理div
var table=document.createElement(“表”);
对于(var i=0;i
我在这个问题上使用了Bergi提出的代码:

谢谢,

您可以使用属性来解决存在HTML时解析HTML和不存在HTML时注入纯文本的问题

此外,您可以使用方法作为一种更简单的循环方式

var orderArray=[
[“1”、“2012年8月29日”、“产品1”、“客户1”],
[“2”、“2012年8月29日”、“产品2”、“客户2”],
[“3”、“2012年8月29日”、“产品3”、“客户3”],
[“4”、“2012年8月29日”、“客户4”],
[“5”、“2012年8月29日”、“产品5”、“客户5”]
];
函数显示(){
//处理div
var container=document.getElementById('container');
var table=document.createElement(“表”);
//数组支持接受回调函数的forEach方法
//对数组的每个项执行。此函数自动
//传递了3个参数:当前数组元素、当前索引和数组本身。
//我们只需要捕获对数组元素的引用(中的value和innerValue)
//这个例子)。
forEach(函数(值){
var row=table.insertRow();
forEach(函数(innerValue){
var cell=row.insertCell();
cell.innerHTML=innerValue;
});
});
返回表;
}
container.appendChild(display())
td{padding:5px;}
您可以使用属性来解决存在HTML时解析HTML和不存在HTML时注入纯文本的问题

此外,您可以使用方法作为一种更简单的循环方式

var orderArray=[
[“1”、“2012年8月29日”、“产品1”、“客户1”],
[“2”、“2012年8月29日”、“产品2”、“客户2”],
[“3”、“2012年8月29日”、“产品3”、“客户3”],
[“4”、“2012年8月29日”、“客户4”],
[“5”、“2012年8月29日”、“产品5”、“客户5”]
];
函数显示(){
//处理div
var container=document.getElementById('container');
var table=document.createElement(“表”);
//数组支持接受回调函数的forEach方法
//对数组的每个项执行。此函数自动
//传递了3个参数:当前数组元素、当前索引和数组本身。
//我们只需要捕获对数组元素的引用(中的value和innerValue)
//这个例子)。
forEach(函数(值){
var row=table.insertRow();
forEach(函数(innerValue){
var cell=row.insertCell();
cell.innerHTML=innerValue;
});
});
返回表;
}
container.appendChild(display())
td{padding:5px;}

要简化整个代码:

container.innerHTML="<table>"+(orderArray.map(row=>"<tr><td>"+row.join("</td><td>")+"</td></tr>").join(""))+"</table>".
container.innerHTML=“”+(orderArray.map(行=>“”+row.join(“”+“”)).join(“”)+“”。

要简化整个代码:

container.innerHTML="<table>"+(orderArray.map(row=>"<tr><td>"+row.join("</td><td>")+"</td></tr>").join(""))+"</table>".
container.innerHTML=“”+(orderArray.map(行=>“”+row.join(“”+“”)).join(“”)+“”。

.createTextNode()
方法完全按照其名称执行:它创建一个文本节点。这就是浏览器忽略HTML标记的原因。。。。或者设置
cell.innerHTML
。标题也有点不正确,因为我只看到字符串[]数组。任何数组中都没有HTMLman@StephanBijzitter你应该再看看。第4个数组元素中有一个超链接。@StephanBijzitter有一些带有标记的表格单元格,如
orderArray[0][3]
方法
.createTextNode()
方法完全按照其名称所示:它创建一个文本节点。这就是浏览器忽略HTML标记的原因。。。。或者设置
cell.innerHTML
。标题也有点不正确,因为我只看到字符串[]数组。任何数组中都没有HTMLman@StephanBijzitter你应该再看看。第4个数组元素中有一个超链接。@StephanBijzitter有一些带有标记的表格单元格,如
orderArray[0][3]
@ScottMarcus join?@ScottMarcus join?感谢您提供的
array.forEach()
提示,更加优雅。@Florent不客气。是的,在这种情况下,它允许我们完全删除索引。是否可以使用
insertRow()
指定插入
tr
的是
td
还是
th
?找不到如何将第一个数组索引声明为表头。编辑哦,我看到有
createTHead()
!感谢您的
Array.forEach()
提示,更加优雅。@Florent不客气。是的,在这种情况下,它允许我们完全删除索引。是否可以使用
insertRow()
指定插入
tr
的是
td
还是
th
?找不到如何将第一个数组索引声明为表头。编辑哦,我看到有
createTHead()
var orderArray = [
    ["1", "29-Aug-2012", "Product1", "client1"],
    ["2", "29-Aug-2012", "Product2", "client2"],
    ["3", "29-Aug-2012", "Product3", "client3"],
    ["4", "29-Aug-2012", "<a href='http://website.org/prod/'>Product4</a>", "client4"],
    ["5", "29-Aug-2012", "Product5", "client5"]
    ];

function display() {
    // get handle on div
    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;
}
var container = document.getElementById('container');
container.appendChild(display());
container.innerHTML="<table>"+(orderArray.map(row=>"<tr><td>"+row.join("</td><td>")+"</td></tr>").join(""))+"</table>".