Reputation: 33
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>';
I'm sure I'm probably missing something obvious.
Upvotes: 3
Views: 2362
Reputation: 22885
I've created a fiddle here
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;
Upvotes: 1
Reputation: 36438
You can't have partial tags in a document. Adding an opening <table>
to the innerHTML
will cause a full (closed) tag to be inserted. Subsequent additions are outside the table, where tr
and td
are illegal.
Build the string first, then add it to the container:
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>
Upvotes: 3