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

When I move/copy a child from one parent to another, how do I get the display to be recalculated?

本文关键字:另一个 复制 显示 计算 何重新 移动 一个      更新时间:2023-09-26

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

我目前正在处理这种行为,让JavaScript样式的父级表现得好像它包含子级,让子级表现得像它包含在父级中,但我想知道是否有更好的方法来更新文档,使其看起来像是将子级放在目标父级下,而不是原始父级下。

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

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

document.getElementById('foo').appendChild(element);

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

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

相关文章: