从insertBefore()获取第一个元素

时间:2010-12-03 02:12:08

标签: javascript dom

我已经在这里呆了几个小时了,我即将开始扯掉头发。基本上我需要做的是获取身体中出现的第一个元素,然后在它之前插入另一个元素。

我尝试了以下方法来获取第一个没有成功的元素(undefined或null)

window.document.body.firstChild

document.getElementsByTagName("body").firstChild

document.getElementsByTagName("body")[0].firstChild

window.document.documentElement.childNodes[1].childNodes[0]

以前的片段中有很多混合和匹配的尝试。我也试过让身体然后appendChild()也没有成功。

此处的任何帮助表示赞赏。提前谢谢。

3 个答案:

答案 0 :(得分:14)

是的,document.body.firstChild是正确的。您可能忽略了insertBefore是父元素的方法的事实,并且它在现有元素之前采用了新元素。例如:

var addedElement = document.createElement('p');
addedElement.appendChild(document.createTextNode('Hello, world!'));

var body = document.body;
body.insertBefore(addedElement, body.firstChild);

答案 1 :(得分:3)

你想要这样的东西:

var first = document.body.children[0];
var beforeEle = document.createElement("div");
beforeEle.innerHTML = "I'm the first element in the body!";
document.body.insertBefore(beforeEle, first);

答案 2 :(得分:1)

将元素添加到我可以使用的身体的最优雅的解决方案是单行:

document.body.insertBefore(element, dom.document.body.firstChild)