Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/jpa/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 为什么不是';不可能在两个dom元素中附加同一个子元素?_Javascript - Fatal编程技术网

Javascript 为什么不是';不可能在两个dom元素中附加同一个子元素?

Javascript 为什么不是';不可能在两个dom元素中附加同一个子元素?,javascript,Javascript,我只是注意到我做不到 var d1 = document.createElement('div'); var d2 = document.createElement('div'); var p = document.createElement('p'); d1.appendChild(p); // d1 has p now d2.appendChild(p); // d2 has p now // but where is p in d1 ? 有人会说这是合乎逻辑的,但当我第一次注意到我觉得

我只是注意到我做不到

var d1 = document.createElement('div');
var d2 = document.createElement('div');
var p = document.createElement('p');

d1.appendChild(p); // d1 has p now
d2.appendChild(p); // d2 has p now
// but where is p in d1 ?
有人会说这是合乎逻辑的,但当我第一次注意到我觉得这有多不酷的时候

为什么不可能呢?

这是一个树结构

附加元素时,会更改其父元素

浏览器中的节点不仅仅是p中的文本(实际上,该字符串可以共享)。它还具有位置、维度、可见性、接收可能在子元素中激发的事件、将事件传播到其父元素等。这里的一切都取决于树上的位置。就像许多CSS选择器一样。想象它在两个地方是同一个元素没有多大意义,最好把它想象成两个节点,可能有一些相同的内容

如果您希望在两个位置具有相同的内容,则可以。

插入“匹配元素集中的每个元素到目标的末尾”。试试这个:

p.appendTo(".div-class1, .div-class2")

你能让一个人同时坐在两辆车里吗?这里什么是不自然的?你可以克隆它并把它放在第二个父项下。@DenysSéguret但dom不是汽车。我的意思是,我知道
p
有一个引用,将该引用从一个地方移动到另一个地方会产生一些效果,但我的问题是,为什么该语言不为多个绑定创建重复引用?@HoschNok False和False。1) 如果使用jQuery附加一个节点,那么也会移动它。2) 有一个本地的
cloneNode
方法。好的,我明白了,克隆。。。但是克隆将取消一次在dom的多个部分触发自定义事件的功能。我需要在不同的克隆上循环,以便一个接一个地触发自定义事件。是的,但是在具有一个类的元素上迭代是快速而简单的:
[].forEach.call(document.querySelectorAll('.myClass'),function(){…
。请为您的答案插入更多说明。请通过编辑为您的答案添加一些解释,以便其他人可以从中学习