首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Javascript循环遍历列表不起作用

Javascript循环遍历列表不起作用
EN

Stack Overflow用户
提问于 2020-10-18 18:21:51
回答 3查看 71关注 0票数 3

我正在尝试制作一个表情包的表格,并制作了一个foreach循环来制作一个表格:

代码语言:javascript
复制
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>"

我的问题是,当我运行代码而不是得到一个12x6的表格时,我得到了这段奇怪的HTML:

代码语言:javascript
复制
<table><tbody><tr></tr></tbody></table>?????????????????????????????????????????????????????????????????????⚡✊✋✌✍❤⭐

我不知道这是什么原因。我该如何解决这个问题呢?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2020-10-18 18:45:38

试试这个:

代码语言:javascript
复制
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>"
代码语言:javascript
复制
<div id="emojiTable"> </div>

票数 1
EN

Stack Overflow用户

发布于 2020-10-18 18:50:42

一种更实用的方法,创建一个表元素并使用Table.insertRow()Row.insertCell()

代码语言:javascript
复制
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)
代码语言:javascript
复制
<div id="emojiTable"></div>

票数 4
EN

Stack Overflow用户

发布于 2020-10-18 19:04:41

你想这样吗??

代码语言:javascript
复制
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)
  })()
代码语言:javascript
复制
table {
  border-collapse: collapse;
  margin: .5em;
}
td {
  padding: .2em .7em;
  border: 1px solid grey;
}
代码语言:javascript
复制
<div id="emojiTable"></div>

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64412191

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档