![](/img/trans.png)
[英]FlexBox container isn't holding my div, can someone provide me an answer as to why
[英]Why isn't this div node the child to the container?
开发 Etch-A-Sketch - 我使用 2 个 for 循环创建了一个 16*16 的网格 - 一个嵌套在另一个中。
const div = document.createElement('div');
div.style.cssText = 'flex: 1';
container.appendChild(div);
// div.addEventListener('mouseover', changeBackground);
for (let j = 0; j < 16; j++){
const div2 = document.createElement('div');
div2.classList.add('square');
div.style.display = 'flex';
div.appendChild(div2);
在这个 for 循环中,我创建了一个 div 并将其分配给const div
然后将其作为 CHILD 节点附加到容器中 - const container = document.querySelector('.container');
. 在内部 for 循环const div2 = document.createElement('div');
被分配为外循环中const div
的子项,因为 div2 是网格上的正方形。 所以 DOM 树看起来像这样:
目前我想要做的是设置一个事件侦听器,当用户单击按钮时将触发该事件侦听器,让他们可以选择设置他们选择的网格 - (即提示他们输入 2 和64,然后以类似的方式我想迭代循环变量 i 和 j - 与用户输入建议的次数一样多,然后生成输入 * 输入网格。但是,我需要做的第一件事是清除其现有网格16 * 16 个方块 - 所以这就是我决定使用removeChild()
方法并从container
删除const div
并从const div
删除const div2
地方。我能够成功调用和删除div.removeChild(div2);
。但是我遇到了一个错误 - Uncaught DOMException: Failed to execute 'removeChild' on 'Node': The node to be removed is not a child of this node , when I run container.removeChild(div);
。我已经查找了有点错误并且已经看到您无法使用removeChild()
方法删除后代 r 来自上面的 DOM 树,我非常确定div
是container
元素的子元素。 所以我的问题是:这个错误的原因是什么,我该如何修复它? 它是否与具有自己的父级container
有关 - containerBorder
?
//sets grid depending on what number the user specifies.
container.removeChild(div);
// let userPrompt = prompt('Generate a grid: Enter a number between 2 and 100: ');
// let input = Number.parseInt(userPrompt, 10);
// container.removeChild(div);
// div.removeChild(div2);
// console.log(typeof input);
// for(let i = 0; i < 16; i++){
// let div = document.createElement('div');
// div.style.cssText = 'border: 1px solid black; flex: 1';
// container.appendChild(div);
// for (let j = 0; j < 16; j++){
// let div2 = document.createElement('div');
// div2.classList.add('square');
// div2.style.display = 'flex';
// div.appendChild(div2);
// }
// }
});
完整代码在这里 - https://codepen.io/safdari/pen/oNXJBGY
container.innerHTML = ''
将清除容器并允许我重新渲染它
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.