我想在DOM树中插入一个元素,以便在包含目标元素的段落之后显示它。
例如,如果我的目标是此处的SPAN元素:
Lorem <span>ipsum</span> dolor sit.
插入新的DIV后,它应如下所示:
Lorem <span>ipsum</span> dolor sit.
<div>newly inserted</div>
这对referenceNode.parentNode.insertBefore(newNode, referenceNode.nextSibling);
很好(例如,请参见How to insert an element after another element in JavaScript without using a library?)
但是,如果同一段中有第二个内联节点,则会导致意外结果:
Lorem <span>ipsum</span> dolor <b>sit</b>.
在这种情况下,DIV将被插入到B节点的前面,从而破坏该段:
Lorem <span>ipsum</span> dolor
<div>newly inserted</div>
<b>sit</b>.
我知道为什么会这样,但这不是我想要的。有没有办法总是在整个段落之后而不是仅在当前节点之后插入DIV?
我怀疑一个选择可能是遍历nextSiblings,直到我到达null
或找到具有CSS display
属性block
的东西为止。