在段落之后插入元素(不仅是节点)

时间:2019-02-11 00:24:11

标签: javascript html css

我想在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的东西为止。

0 个答案:

没有答案