在纯JS中插入firstchild div之后

时间:2017-10-15 17:42:56

标签: javascript dom getelementbyid

我使用纯JS在getElementById找到的div之后追加HTML字符串。这是正常的,但我现在想在找到的元素的第一个孩子后追加。

JSFiddle

HTML

第一部 Div我想补充一下 其他div ...

(第二和第三个div没有id或class)

JS

function insertAfter(referenceNode, newNode) {
    referenceNode.parentNode.insertBefore(newNode, referenceNode.nextSibling);
}

var element1 = document.createElement("div");
element1.innerHTML = 'Text to append';
var div1 = document.getElementById('first-div');
insertAfter(div1, element1);

目前的结果是:

  

第一部   Div我想补充一下   其他div ...   要追加的文字

我正在努力实现这一目标:

  

第一部   Div我想补充一下   要追加的文字   其他div ...

我试过了

var div1 = document.getElementById('first-div').firstchild;

但这不起作用

2 个答案:

答案 0 :(得分:1)

正如我在评论中所说,你的例子表明你想要追加的div不是孩子,而是" first-div"的兄弟姐妹。它应该看起来像

<div id="first-child">
    <div>Div I want to append to</div>
</div>

然后可以使用

找到父div的第一个子节点
var div2 = div1.children[0];

我摆弄着你的小提琴:

http://jsfiddle.net/01qrmj36/

答案 1 :(得分:0)

如果从insertAfter示例中的insertBefore调用中删除referenceNode,它应该按照您希望的方式运行,例如:

function insertAfter(referenceNode, newNode) {
    referenceNode.parentNode.insertBefore(newNode);
}

var element1 = document.createElement("div");
element1.innerHTML = 'Text to append';
var div1 = document.getElementById('first-div');
insertAfter(div1, element1);

从insertBefore中省略referenceNode默认为在子节点列表的末尾插入新节点,请参阅更多here