【发布时间】:2022-06-23 22:58:42
【问题描述】:
有兴趣知道是否有人可以帮助描述我所看到的行为的内部结构。
本质上,当创建一个新的 dom 元素(然后存储在一个 const 中)时,这个元素不能被追加和前置到同一个父元素。
例子:
const ul = document.querySelector('ul');
const button = document.querySelector('button');
button.addEventListener('click', () => {
const li = document.createElement('li');
li.textContent = 'new li';
ul.prepend(li);
ul.append(li);
});
这似乎是对append 或prepend 的最后一次调用,请注意,如果您最后调用 prepend,则新元素只会添加到ul 的开头。
深入研究,似乎克隆节点在随后的append/prepend 调用之前有效。
const li = document.createElement('li');
li.textContent = 'something new to do';
ul.prepend(li);
const newLi = li.cloneNode(true);
ul.append(newLi);
但是我很想知道它的内部工作原理以及为什么您似乎不能针对同一个元素进行调用?任何人都可以对此有所了解,因为 Mozilla 文档似乎没有对此有所了解。
小提琴:https://jsfiddle.net/gf7b0pom
谢谢大家!
【问题讨论】:
标签: javascript