2010-12-03 20 views
6

Şimdi birkaç saatliğine çalışıyorum ve saçları koparmaya başlamak üzereyim. Temel olarak yapmam gereken şey, vücutta görünen ilk elementi almak ve daha sonra başka bir eleman eklemek.İlk elemanı <body>'dan aldıktan sonra insertBefore()

Ben

window.document.body.firstChild 

document.getElementsByTagName("body").firstChild 

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

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

Ve önceki snippet'lerden karışık ve eşleşen girişimleri bir bütün döndürmek hiç (tanımsız veya boş) başarı ile ilk elemanı almak için aşağıdaki denedim. Ben de daha sonra sadece vücut daha sonra appendChild() hiçbir başarı ile elde denedim.

Burada herhangi bir yardım için teşekkür ederiz. Şimdiden teşekkürler.

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

veya normal bir belge? – danjah

+1

'document.body.firstChild' is fine. 'InsertBefore() 'ile ilgili argümanların sırasına sahip olduğunuzdan emin misiniz? –

cevap

2

Böyle bir şey istiyorum. Muhtemelen insertBefore'un ana öğenin bir yöntemi olduğu gerçeğine bakıyorsunuzdur ve mevcut öğeden önce yeni öğeyi alır. Örneğin:

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

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

'Çocuklar' evrensel olarak desteklenmez (örneğin, Firefox'ta yalnızca 3.5 sürümünde tanıtılmıştır). Şimdilik 'childNodes' kullanmanız gerekecek. –

12

Evet, document.body.firstChild doğrudur:

1

en zarif çözüm ben ile olabilir vücuda bir öğe başına gelecek bir tek kılıftır:

o bir iframe
document.body.insertBefore(element, dom.document.body.firstChild) 
İlgili konular