2011-05-16 12 views
33

मैं इस तरह js में insertBefore उपयोग करने के लिए कोशिश कर रहा हूँ:शरीर टैग में पहले() तत्व कैसे सम्मिलित करें?

var p = document.createElement("p"); 
p.innerHTML = "test1"; 
document.body.insertBefore(p, null); 

var p = document.createElement("p"); 
p.innerHTML = "test2"; 
document.body.insertBefore(p, null); 

लेकिन वह सिर्फ शरीर टैग बंद होने से पहले पिछले पी तत्व जोड़ना होगा, मैं इसे कैसे इस्तेमाल कर सकते हैं तो यह शीर्ष करने के लिए जोड़ दिया जाएगा जब यह खुलता है? इसलिए अंतिम तत्व जोड़ा गया शरीर टैग के अंदर पहला तत्व होगा।

मैंने कोशिश की:

document.body.insertBefore(p, document.getElementsByTagName('body')[0]); 

लेकिन फ़ायरबग पता चलता है:

नोड नहीं मिला था "कोड:" 8

+0

आजमाएँ document.body.prepend। साथ ही, आंतरिक HTML सेट न करने के लिए आम तौर पर अच्छा अभ्यास होता है। 'OldNode.replaceWith (newNode) 'का उपयोग करें या' oldNode.innerText' – Gibolt

उत्तर

57

आप firstChild साथ body तत्व की पहली संतान प्राप्त कर सकते हैं संपत्ति। फिर इसे संदर्भ के रूप में उपयोग करें।

document.body.insertBefore(p, document.body.firstChild); 

jsFiddle

1

आपको कुछ से पहले डालना होगा। document.getElementsByTagName('body')[0] है शरीर तत्व (वाक्य रचना एक चाल का एक सा सभी ब्राउज़रों में शरीर तत्व प्राप्त करने के लिए है)। यदि आप शरीर में सम्मिलित करना चाहते हैं, तो आप इसके पहले तत्व से पहले सम्मिलित करना चाहते हैं। यही कारण है कि ऐसा दिखाई दे सकता:

var body = document.body || document.getElementsByTagName('body')[0], 
    newpar = document.createElement('p'); 
newpar.innerHTML = 'Man, someone just created me!'; 
body.insertBefore(newpar,body.childNodes[0]); 

कुछ ब्राउज़रों यह document.body है में , अन्य document.documentElement आदि, लेकिन सभी ब्राउज़रों में टैगनाम body

+0

सेट करें जो ब्राउज़र 'document.body' का समर्थन नहीं करते हैं? – alex

+0

@alex आप सही हैं, हर ब्राउज़र इसका समर्थन करता है। मुझे लगता है कि यह मेरी याद में एक लंबे समय से अतीत से एक निशान है। – KooiInc

+0

@Kooilnc मेरे पास वापस आने के लिए धन्यवाद, मेरे पास जंगली में बहुत कुछ 'document.body' है और थोड़ा चिंतित था: पी – alex

3
document.body.prepend(p); 

यह एक नया है (संभावना) ES7 में अतिरिक्त। यह वेनिला जेएस है और पिछले विकल्पों की तुलना में अधिक पठनीय है। यह वर्तमान में क्रोम, एफएफ और ओपेरा सहित 83% of browsers में उपलब्ध है।

आप सीधे तार पहले जोड़ें कर सकते हैं, हालांकि वे नहीं होगा 'पी' टैग

document.body.prepend('This text!'); 

लिंक: developer.mozilla.org - Polyfill

संबंधित मुद्दे