Reputation: 59
I'm trying to make a table of emojis and made a foreach loop to make a table:
emojis = ['๐', '๐', '๐', '๐', '๐', '๐
', '๐', '๐', '๐', '๐', '๐', '๐', '๐', '๐', '๐', '๐', '๐', '๐', '๐', '๐', '๐', '๐', '๐', '๐', '๐', '๐', '๐', '๐', '๐', '๐', '๐', '๐', '๐ ', '๐ก', '๐ข', '๐ฃ', '๐ค', '๐ฅ', '๐ฆ', '๐ง', '๐จ', '๐ฉ', '๐ช', '๐ซ', '๐ฌ', '๐ญ', '๐ฎ', '๐ฏ', '๐ฐ', '๐ฑ', '๐ฒ', '๐ณ', '๐ด', '๐ต', '๐ถ', '๐ท', '๐', '๐', '๐', '๐', '๐', '๐', '๐', '๐', '๐', '๐', '๐', '๐', '๐', 'โก', 'โ', 'โ', 'โ', 'โ', 'โค', 'โญ']
var i = 0
document.getElementById("emojiTable").innerHTML += "<table><tr>"
emojis.forEach(emoji => {
if(i == 12) {
document.getElementById("emojiTable").innerHTML += "</tr><tr>"
i = 0
}
document.getElementById("emojiTable").innerHTML += "<td>"+emoji+"</td>"
i ++
})
document.getElementById("emojiBAR").innerHTML += "</table>"
My problem is that when i run the code instead of getting a 12 x 6 table i get this weird piece of HTML:
<table><tbody><tr></tr></tbody></table>๐๐๐๐๐๐
๐๐๐๐๐๐๐๐๐๐๐๐๐๐๐๐๐๐๐๐๐๐๐๐๐๐๐ ๐ก๐ข๐ฃ๐ค๐ฅ๐ฆ๐ง๐จ๐ฉ๐ช๐ซ๐ฌ๐ญ๐ฎ๐ฏ๐ฐ๐ฑ๐ฒ๐ณ๐ด๐ต๐ถ๐ท๐๐๐๐๐๐๐๐๐๐๐๐๐โกโโโโโคโญ
I have no idea what is causing this. How can i fix this?
Upvotes: 3
Views: 101
Reputation: 171669
A more practical approach that creates a table element and uses Table.insertRow()
and Row.insertCell()
:
emojis = ['๐', '๐', '๐', '๐', '๐', '๐
', '๐', '๐', '๐', '๐', '๐', '๐', '๐', '๐', '๐', '๐', '๐', '๐', '๐', '๐', '๐', '๐', '๐', '๐', '๐', '๐', '๐', '๐', '๐', '๐', '๐', '๐', '๐ ', '๐ก', '๐ข', '๐ฃ', '๐ค', '๐ฅ', '๐ฆ', '๐ง', '๐จ', '๐ฉ', '๐ช', '๐ซ', '๐ฌ', '๐ญ', '๐ฎ', '๐ฏ', '๐ฐ', '๐ฑ', '๐ฒ', '๐ณ', '๐ด', '๐ต', '๐ถ', '๐ท', '๐', '๐', '๐', '๐', '๐', '๐', '๐', '๐', '๐', '๐', '๐', '๐', '๐', 'โก', 'โ', 'โ', 'โ', 'โ', 'โค', 'โญ']
const table = document.createElement('table');
let row;
emojis.forEach((emoji, i) => {
if (i % 12 === 0) {
row = table.insertRow();
}
row.insertCell().innerHTML = emoji;
})
document.getElementById("emojiTable").append(table)
<div id="emojiTable"></div>
Upvotes: 4
Reputation: 22320
you want that ??
const emojis =
[ '๐', '๐', '๐', '๐', '๐', '๐
', '๐', '๐', '๐', '๐', '๐', '๐'
, '๐', '๐', '๐', '๐', '๐', '๐', '๐', '๐', '๐', '๐', '๐', '๐'
, '๐', '๐', '๐', '๐', '๐', '๐', '๐', '๐', '๐ ', '๐ก', '๐ข', '๐ฃ'
, '๐ค', '๐ฅ', '๐ฆ', '๐ง', '๐จ', '๐ฉ', '๐ช', '๐ซ', '๐ฌ', '๐ญ', '๐ฎ', '๐ฏ'
, '๐ฐ', '๐ฑ', '๐ฒ', '๐ณ', '๐ด', '๐ต', '๐ถ', '๐ท', '๐', '๐', '๐', '๐'
, '๐', '๐', '๐', '๐', '๐', '๐', '๐', '๐', '๐', 'โก', 'โ', 'โ'
, 'โ', 'โ', 'โค', 'โญ']
;
(function() // IIFE generateTable
{
let eTable = document.createElement('table')
, cRow = null
emojis.forEach( (emoji,indx)=>
{
if ( !(indx % 12)) cRow = eTable.insertRow()
cRow.insertCell().innerHTML = emoji
})
document.getElementById('emojiTable').appendChild(eTable)
})()
table {
border-collapse: collapse;
margin: .5em;
}
td {
padding: .2em .7em;
border: 1px solid grey;
}
<div id="emojiTable"></div>
Upvotes: 0
Reputation: 2731
Try this :
emojis = ['๐', '๐', '๐', '๐', '๐', '๐
', '๐', '๐', '๐', '๐', '๐', '๐', '๐', '๐', '๐', '๐', '๐', '๐', '๐', '๐', '๐', '๐', '๐', '๐', '๐', '๐', '๐', '๐', '๐', '๐', '๐', '๐', '๐ ', '๐ก', '๐ข', '๐ฃ', '๐ค', '๐ฅ', '๐ฆ', '๐ง', '๐จ', '๐ฉ', '๐ช', '๐ซ', '๐ฌ', '๐ญ', '๐ฎ', '๐ฏ', '๐ฐ', '๐ฑ', '๐ฒ', '๐ณ', '๐ด', '๐ต', '๐ถ', '๐ท', '๐', '๐', '๐', '๐', '๐', '๐', '๐', '๐', '๐', '๐', '๐', '๐', '๐', 'โก', 'โ', 'โ', 'โ', 'โ', 'โค', 'โญ']
var i = 0
var table = document.getElementById("emojiTable");
var str = "<table><tr>";
emojis.forEach(emoji => {
if (i == 12) {
str += "</tr><tr>";
i = 0
}
str += "<td>" + emoji + "</td>";
i++
})
table.innerHTML = str;
//document.getElementById("emojiBAR").innerHTML += "</table>"
<div id="emojiTable"> </div>
Upvotes: 1