gpt4 book ai didi

javascript - for循环中的appendChild只添加1个 child

转载 作者:搜寻专家 更新时间:2023-11-01 04:44:07 25 4
gpt4 key购买 nike

在 JavaScript 中,我使用 HTML 表格创建了一个网格(您在 Photoshop 中看到的网格类型)。网格大小将是可变的,即可以由用户更改,因此必须计算每个网格正方形的大小并除以可用像素数以获得精确大小的网格。

我已经完成了所有这些,但是我在添加必要的表格元素以创建网格时遇到了问题。我的代码处于完整的工作状态,除了当我在 for 循环中使用 appendChild() 函数时它只会追加一个 child ,而它应该追加最多几百个。

我的代码:

grid.show = function(event)
{
var e = event;

if(grid.show_grid == false)
{
grid.show_grid = true;

parent.document.getElementById("grid_table").style.display = "block";

// Get grid (table) and create some elements.
grid.get_grid = parent.document.getElementById("grid_table");
grid.tr = parent.document.createElement("tr");
grid.td = parent.document.createElement("td");

// Clear the grid of all squares so we don't have to worry about subtracting anything.
grid.get_grid.innerHTML = "";

// Calculate the number of horizontal and vertical squares.
var horizontal = Math.ceil(grid.total_width / grid.size);
var vertical = Math.ceil(grid.total_height / grid.size);

// This was a nested loop, removed for demonstration.
// Attempting to add 10 "<tr><td></td></tr>" to the table.
for(var j = 0; j < 10; j++)
{
grid.tr.appendChild(grid.td);
}

//console.log(grid.tr);

// Add the elements to the table.
grid.get_grid.appendChild(grid.tr);

}
else
{
grid.show_grid = false;
parent.document.getElementById("grid_table").style.display = "none";
}
}

这只会返回一个表行,其中包含单个表数据,如下所示:

<tr>
<td></td>
</tr>

我已经看过 this pagethis page ,它们听起来很有希望,但我就是想不出如何让它发挥作用。

编辑:代码现在可以工作,解决方案:

grid.show = function(event)
{
var e = event;

if(grid.show_grid == false)
{
grid.show_grid = true;

parent.document.getElementById("grid_table").style.display = "block";

grid.get_grid = parent.document.getElementById("grid_table");
grid.tr = null;
grid.td = null;
grid.get_grid.innerHTML = "";

var horizontal = Math.ceil(grid.total_width / grid.size);
var vertical = Math.ceil(grid.total_height / grid.size);

for(var i = 0; i < vertical; i++)
{
grid.tr = parent.document.createElement("tr");

for(var j = 0; j < horizontal; j++)
{
grid.td = parent.document.createElement("td");

grid.td.width = grid.size;
grid.td.height = grid.size;

grid.tr.appendChild(grid.td);
}
grid.get_grid.appendChild(grid.tr);
}
}
else
{
grid.show_grid = false;
parent.document.getElementById("grid_table").style.display = "none";
}
}

最佳答案

您一遍又一遍地附加相同的元素。每次您希望拥有一个新元素时,都需要调用 document.createElement

编辑:如果元素设置真的很复杂并且可能包含子项,那么您也可以使用 Node.cloneNode

关于javascript - for循环中的appendChild只添加1个 child ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12730824/

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