JavaScript element.appendChild() 方法表现奇怪

标签 javascript appendchild

我想做的是..在3个元素中附加一个公共(public)节点/元素..

const elements = document.getElementsByClassName(“test”);
const newElement = document.createElement(“BUTTON”);
newElement.classList.add(“dummy”);

Array.from(elements).forEach(item => {
item.appendChild(newElement);
});

预期的行为是所有 .test元素应包含 .dummy按钮..

但实际上只是最后一个 .test元素得到.dummy按钮..

但是如果我像这样将该按钮放在循环中:

const elements = document.getElementsByClassName(“test”);

Array.from(elements).forEach(item => {
const newElement = document.createElement(“BUTTON”);
newElement.classList.add(“dummy”);
item.appendChild(newElement);
});

然后全部.test元素得到 .dummy按钮..!!

谁能解释一下这种 JS 行为的任何具体原因吗?我尝试用谷歌搜索,但没有找到任何好的解释。

最佳答案

这是因为子 dom 只能有一个父节点,因为 dom 是一种树结构,子节点不能继承多个父节点。在您的情况下,您尝试将多个父节点分配给子节点newElement

每次创建新子项时都会在数组内,并且它只有一个父项

关于JavaScript element.appendChild() 方法表现奇怪,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61498185/

相关文章:

javascript - javascript 正则表达式中的精确字符串否定

javascript - Js Opentok (Tokbox) 显示等待状态。

javascript - 在 HTML5 Web SQL 数据库中对日期时间进行排序

javascript - 使用appendchild或其他方法向ul添加html代码而不是纯文本?

javascript - .appendChild() 单击时的 HTML 元素

javascript - 使用 Javascript 将 HTML 中的段落替换为新段落

javascript - JS 将子项附加到类的每个元素

javascript - .change() 同时添加两个值

javascript - 在javascript中播放音频时更改左/右平衡

javascript - Jquery - 在同一行附加元素