2010-12-03 121 views
6

我已经在这里工作了几个小时,现在即将开始剥离头发。基本上我需要做的是获取出现在主体中的第一个元素,然后在其之前插入另一个元素。从<body>获取第一个元素,然后insertBefore()

我已尝试以下没有成功(未定义或为空)来获得的第一个元素

window.document.body.firstChild 

document.getElementsByTagName("body").firstChild 

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

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

和以往的片段的混合和匹配尝试的整体转换。我也尝试过只获取body,然后appendChild()也没有成功。

这里的任何帮助表示赞赏。提前致谢。

+0

是它在iframe,或正常文件? – danjah 2010-12-03 02:16:41

+1

`document.body.firstChild`很好。你确定你的`insertBefore()`参数的顺序是正确的吗? – 2010-12-03 02:22:53

回答

2

你想是这样的:

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); 
12

是,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

最好的解决方案,以预先考虑到身体我所能了一个元件是一个班轮:

document.body.insertBefore(element, dom.document.body.firstChild) 
相关问题