javascript - HTML 逐列添加数据而不是逐行添加数据

标签 javascript html

我在外部 js 文件中有 2 个数组

var fruit = ["Banana", "Orange", "Apple", "Mango"];
var colour = ["yellow", "orange", "red", "orange"];

我需要将这些数据存储在表中。

let p = document.getElementById('output1');
let fruit = ["Banana", "Orange", "Apple", "Mango"];
p.innerHTML = fruit.map(i => `<td>${i}</td>`).join('');

p = document.getElementById('output2');
let colour = ["yellow", "orange", "red", "orange"];
p.innerHTML = colour.map(i => `<td>${i}</td>`).join('');
<table>
  <tr>
    <th>fruit</th>
    <th>colour</th>
  </tr>

  <tr id="output1"></tr>
  <tr id="output2"></tr>

</table>

这不起作用,因为它是逐行输入的。如何让它逐列输入? 提前致谢!

最佳答案

有很多方法可以做到这一点。这是一个 for 循环:(请注意,我在表上放置了“foo”的 id)

for(var i = 0; i < fruit.length; i++) {
    document.getElementById("foo").innerHTML += "<tr><td>" +
            fruit[i] + "</td><td>" + colour[i] + "</td></tr>";
}

通过附加到临时变量来避免对innerHTML进行大量修改:

var tableHTML = "";
for(var i = 0; i < fruit.length; i++) {
    tableHTML += "<tr><td>" + fruit[i] + "</td><td>" + colour[i] + "</td></tr>";
}
document.getElementById("foo").innerHTML += tableHTML;

利用传递给 map 回调的第二个参数:

document.getElementById("foo").innerHTML += fruit.map((fruit, index) =>
        `<tr><td>${fruit}</td><td>${colour[index]}</td></tr>`).join("");
<小时/>

开个玩笑,您可以使用 CSS 转置表格 - 从 this answer 窃取。 :

If you want to display columns, not rows, try this simple CSS

tr { display: block; float: left; }
th, td { display: block; }

关于javascript - HTML 逐列添加数据而不是逐行添加数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51086156/

相关文章:

javascript - .getDay() 在 IE 和 Safari 中不起作用

javascript - 主干集合获取对象 - 第 2 部分

javascript - Firebase Cloud Functions - sendToTopic() 格式错误

html - 水平对齐两个表格 HTML/CSS

html - 带有悬停的 CSS 菜单可更改整个框架图片

javascript - three.js pov 相机环视错误

javascript - 纯 JavaScript 每个函数都不起作用

javascript - 如何限制div中的图像大小

javascript - 一个简单的 jQuery/AJAX 查询

html - 故障排除 clojure 网络应用程序 : connecting html and css for heroku deployment