Javascript 当我将子对象从一个父对象移动/复制到另一个父对象时,如何重新计算显示?

Javascript 当我将子对象从一个父对象移动/复制到另一个父对象时,如何重新计算显示?,javascript,html,dom,Javascript,Html,Dom,我正在尝试将一个图像从父级A(它有几个子级)拖放到父级B(它最初是空的)。我可以指定element.parent=document.getElementById('foo'),但文档不会像我最初将元素放在foo下那样自然流动 我目前正在解决这个问题,让JavaScript样式的父对象像包含子对象一样操作,子对象像包含在父对象中一样操作,但我想知道是否有更好的方法更新文档,使其看起来像是将子项放在目标父项下而不是原始父项下。您没有正确移动DOM中的项-如果您正确移动它,显示将自动更新 您不能只设置

我正在尝试将一个图像从父级A(它有几个子级)拖放到父级B(它最初是空的)。我可以指定element.parent=document.getElementById('foo'),但文档不会像我最初将元素放在foo下那样自然流动


我目前正在解决这个问题,让JavaScript样式的父对象像包含子对象一样操作,子对象像包含在父对象中一样操作,但我想知道是否有更好的方法更新文档,使其看起来像是将子项放在目标父项下而不是原始父项下。

您没有正确移动DOM中的项-如果您正确移动它,显示将自动更新

您不能只设置
.parent
属性。首先,
.parent
甚至不是DOM元素上的属性(它是
.parentNode
)。其次,它不是可以直接设置的属性(根据,它是只读属性)。相反,您需要这样做:

document.getElementById('foo').appendChild(element);
这将从它当前所在的DOM位置删除它,并将其作为新父节点的最后一个子节点追加。如果要将其作为相对于现有子节点的特定子节点(例如,作为第三个子节点或第一个子节点),可以使用
.insertBefore()
而不是
.appendChild()


如果要将节点复制到新位置,而不是移动现有节点,则必须首先复制节点(从头开始复制或使用
.cloneNode())
,然后以相同的方式将副本插入DOM。

您没有在DOM中正确移动项目-当您正确移动项目时,显示将自动更新

您不能只设置
.parent
属性。首先,
.parent
甚至不是DOM元素上的属性(它是
.parentNode
)。其次,它不是您可以直接设置的属性(根据,它是只读属性)。相反,您需要这样做:

document.getElementById('foo').appendChild(element);
这将从其当前所在的DOM位置将其删除,并将其作为新父节点的最后一个子节点追加。如果要将其作为相对于现有子节点的特定子节点(例如,作为第三个子节点或第一个子节点),可以使用
.insertBefore()
而不是
.appendChild()

如果要将节点复制到新位置,而不是移动现有节点,则必须首先复制节点(从头开始或使用
.cloneNode()
),然后以相同的方式将副本插入DOM