gpt4 book ai didi

javascript - 使用循环在 Javascript 中创建

转载 作者:行者123 更新时间:2023-12-02 18:00:54 25 4
gpt4 key购买 nike

我正在尝试创建一个表格,其中每个单元格由一个字母和一个数字组成。查看目标表的图像:

target table

这是我正在使用的 HTML 代码。这是一个简单的按钮,单击时应调用 populateTable() 函数,然后在页面上显示表格。

<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8"/>
<title>Document</title>
<style>
table { border-collapse: collapse; margin: 1em 0; }
td { border: 1px solid black; padding: 0.3em; }
</style>
</head>
<body>

<h2>Table</h2>
<table id="the-table"></table>
<button type="button" onclick="populateTable();">Populate table</button>

<script src="table.js"></script>
</body>
</html>

但这里的主要问题是我的 JS 代码。

function populateTable(){
letters = ["a", "b", "c", "d", "e"]
numbers = ["1", "2", "3", "4", "5"]

for(let i = 0; i < numbers.length; i++){
document.getElementById("the-table").innerHTML += "<tr>"
for(let j = 0; j < letters.length; j++){
document.getElementById("the-table").innerHTML += "<td>" + letters[j] + numbers[i] + "</td>"
}
document.getElementById("the-table").innerHTML += "</tr>"
}
}

内循环退出后如何创建新的?

当前代码的结果类似于 this

请帮忙:'D

我尝试四处走动

document.getElementById("the-table").innerHTML += "<tr>"

document.getElementById("the-table").innerHTML += "</tr>"

但无济于事。我尝试在网上寻找答案,但没有发现任何对我的情况有用的答案。像appendChild这样的东西并不是我真正想要的。我只是想知道为什么上面提到的这些行(“”)不起作用以及解决此问题的最简单方法是什么?

最佳答案

您可以使用creatElement而不是写文字。 InnerHtml 可能存在安全问题。如果您好奇,请查看 XSS。

const letters = ["a", "b", "c", "d", "e"]
const numbers = ["1", "2", "3", "4", "5"]

const table = document.getElementById("the-table");

function populateTable() {
for (let i = 0; i < numbers.length; i++) {
const row = document.createElement("tr");
for (let j = 0; j < letters.length; j++) {
const column = document.createElement("td");
column.textContent = letters[j] + numbers[i];
row.appendChild(column);
}
table.appendChild(row);
}
}
table {
border-collapse: collapse;
margin: 1em 0;
}

td {
border: 1px solid black;
padding: 0.3em;
}
<h2>Table</h2>
<table id="the-table"></table>
<button type="button" onclick="populateTable();">Populate table</button>

你原来的逻辑很好,但是innerHTML很麻烦。如果你检查 html,你会看到innerHtml:

<table id="the-table"><tbody><tr></tr></tbody><tbody><tr><td>a1</td></tr></tbody><tbody><tr><td>b1</td></tr></tbody><tbody><tr><td>c1</td></tr></tbody><tbody><tr><td>d1</td></tr></tbody><tbody><tr><td>e1</td></tr></tbody><tbody><tr></tr></tbody><tbody><tr><td>a2</td></tr></tbody><tbody><tr><td>b2</td></tr></tbody><tbody><tr><td>c2</td></tr></tbody><tbody><tr><td>d2</td></tr></tbody><tbody><tr><td>e2</td></tr></tbody><tbody><tr></tr></tbody><tbody><tr><td>a3</td></tr></tbody><tbody><tr><td>b3</td></tr></tbody><tbody><tr><td>c3</td></tr></tbody><tbody><tr><td>d3</td></tr></tbody><tbody><tr><td>e3</td></tr></tbody><tbody><tr></tr></tbody><tbody><tr><td>a4</td></tr></tbody><tbody><tr><td>b4</td></tr></tbody><tbody><tr><td>c4</td></tr></tbody><tbody><tr><td>d4</td></tr></tbody><tbody><tr><td>e4</td></tr></tbody><tbody><tr></tr></tbody><tbody><tr><td>a5</td></tr></tbody><tbody><tr><td>b5</td></tr></tbody><tbody><tr><td>c5</td></tr></tbody><tbody><tr><td>d5</td></tr></tbody><tbody><tr><td>e5</td></tr></tbody></table>

如果你真的想使用innerHTML,有an answer展示如何。如果可以的话不要这样做。主题为:innerHTML is adding tbody, why? 。他们的建议与我的建议相同“无论如何,您都不应该真正构建具有innerHTML 操作的表。”

关于javascript - 使用循环在 Javascript 中创建 <tr>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/74461438/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com