将表,tr,td标记附加到innerHTML不会创建表行

时间:2015-11-20 22:41:23

标签: javascript html

var menuStarters = [["chicken", "5.00"], ["salad", "4.11"], ["soup", "3.88"]];
document.getElementById("menu").innerHTML += '<table>';
for (var i = 0; i < menuStarters.length; i++)
{
  document.getElementById("menu").innerHTML += '<tr><td>' + menuStarters[i][0] + '</td><td>' + menuStarters[i][1] + '</td></tr>';
}
document.getElementById("menu").innerHTML += '</table>';

我确信我可能错过了一些明显的东西。

2 个答案:

答案 0 :(得分:3)

您不能在文档中包含部分标记。向<table>添加开口innerHTML将导致插入完整(已关闭)标记。后续添加内容不在表格中,其中trtd是非法的。

首先构建字符串,然后将其添加到容器中:

var menuStarters = [
  ["chicken", "5.00"],
  ["salad", "4.11"],
  ["soup", "3.88"]
];

var thtml = '<table>';
for (var i = 0; i < menuStarters.length; i++) {
  thtml += '<tr><td>' + menuStarters[i][0] + '</td><td>' + menuStarters[i][1] + '</td></tr>';
}
thtml += '</table>';

document.getElementById("menu").innerHTML += thtml
<div id="menu"></div>

答案 1 :(得分:1)

我在这里创造了一个小提琴

https://jsbin.com/jeguka/edit?html,js,output

var menuStarters = [["chicken", "5.00"], ["salad", "4.11"], ["soup", "3.88"]];
var html = '<table>';
menuStarters.forEach(function(item, index){
html += '<tr><td>' + item[0] + '</td><td>' + item[1] + '</td></tr>';
});
html += '</table>';
document.getElementById("menu").innerHTML = html;