2011-09-25 19 views
7

मैं वर्तमान सीमा (एक डब्ल्यू 3 सी रेंज) पर एचटीएमएल डालना चाहता हूं।क्यों कोई दस्तावेज़ नहीं है .createHTMLNode()?

मुझे लगता है कि मुझे विधि insertNode का उपयोग करना है। और यह पाठ के साथ महान काम करता है।

उदाहरण:

var node = document.createTextNode("some text"); 
range.insertNode(node); 

समस्या यह है कि मैं (जैसे "<h1> परीक्षण </h1 > कुछ और पाठ" कुछ हो सकता है) एचटीएमएल सम्मिलित करना चाहते है। और कोई createHTMLNode() नहीं है।

मैंने createElement ('div') का उपयोग करने की कोशिश की है, इसे एक आईडी दें, और HTML को आंतरिक HTML के रूप में दें और फिर इसे डालने के बाद इसे अपने नोड के साथ बदलने की कोशिश करें लेकिन यह मुझे डोम त्रुटियां देता है।

क्या एचटीएमएल के चारों ओर एक अतिरिक्त एचटीएमएल तत्व प्राप्त किए बिना ऐसा करने का कोई तरीका है?

+1

[इस] के अनुसार (https://developer.mozilla.org/en/DOM/range

यहाँ एक उदाहरण है .insertNode) आप डीओएम तत्वों को ठीक कर सकते हैं। तो कृपया कोड और त्रुटि संदेश पोस्ट करें और हम इसे डीबग करने में आपकी सहायता करेंगे .. –

+0

क्या आप एक जेएसफ़ील्ड डेमो (या कोड स्वयं) प्रदान कर सकते हैं? मैंने श्रेणियों के साथ बहुत काम नहीं किया है, इसलिए मुझे यकीन नहीं है कि मैं आपकी स्थिति को फिर से बना सकता हूं .... –

उत्तर

6

क्योंकि "<h1>test</h1>some more text" में एक HTML तत्व और टेक्स्ट के दो टुकड़े शामिल हैं। यह नोड नहीं है।

यदि आप HTML डालना चाहते हैं तो innerHTML का उपयोग करें।

क्या एचटीएमएल के चारों ओर एक अतिरिक्त HTML-तत्व प्राप्त किए बिना ऐसा करने का कोई तरीका है जिसे मैं सम्मिलित करना चाहता हूं?

एक तत्व बनाएं (दस्तावेज़ में इसे जोड़ें नहीं)। अपना आंतरिक HTML सेट करें। फिर foo.childNodes पर लूपिंग करके अपने सभी बच्चे नोड्स को ले जाएं।

+0

आह। बहुत बढ़िया जवाब। एक आकर्षण की तरह काम करता है :) धन्यवाद! – Martin

3

आंतरिक HTML के बजाय बस appendChild (तत्व) का उपयोग करें; this आपकी मदद कर सकता है। यदि आप यहां टिप्पणी चाहते हैं, और मैं आपको एक उदाहरण दूंगा।

+0

बिल्कुल, और ऐसा करने के लिए सबसे अच्छी विधि। – Rob

4

कुछ ब्राउज़रों (विशेष रूप से IE का कोई संस्करण नहीं) में, Range ऑब्जेक्ट्स मूल रूप से गैर-मानक createContextualFragment() है जो मदद कर सकता है। ऐसा लगता है कि आईई जैसे ब्राउज़र के भविष्य के संस्करण अब इसे लागू करेंगे it has been standardized

var frag = range.createContextualFragment("<h1>test</h1>some more text"); 
range.insertNode(frag); 
संबंधित मुद्दे