2010-12-03 8 views
6

私はこれを数時間前から行っています。基本的に私がする必要があるのは、本体に表示される最初の要素を取得し、その前に別の要素を挿入することです。最初の要素を<body>から取得します。次にinsertBefore()

ノー成功(未定義またはnull)

window.document.body.firstChild 

document.getElementsByTagName("body").firstChild 

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

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

と前のスニペットの混合とマッチした試みの全体のスルーを持つ最初の要素を取得するには、次の試してみました。私はまた、体をちょうど取得し、次に成功しないappendChild()を試みました。

ここのお役に立てれば幸いです。前もって感謝します。

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); 
+0

それはIFRAME、または通常の文書にありますか? – danjah

+1

'document.body.firstChild'は問題ありません。あなたは 'insertBefore()'の引数の順序が正しいと確信していますか? –

答えて

2

あなたはこのような何かをしたいです。 insertBeforeが親要素のメソッドであり、既存の要素の前に新しい要素を取り込むという事実を見落としている可能性があります。たとえば、次のように

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

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

'children'は普遍的にサポートされているわけではありません(例えば、バージョン3.5ではFirefoxでのみ導入されました)。今のところ 'childNodes'を使う必要があります。 –

12

はい、document.body.firstChildが正しい:

1

アップと私ができる体に要素を付加するための最もエレガントな解決策は、ワンライナーです:

document.body.insertBefore(element, dom.document.body.firstChild) 
関連する問題