dom - Using JavaScript insertBefore() to insert before a TextNode? -


मेरे पास HTML की तरह निम्न है:

  & lt; div id = "move-me "& gt; & Lt; a href = "#" & gt; मैं एक लिंक हूं & lt; / a & gt; & Lt; / div & gt; & Lt; div id = "new-parent" & gt; कुछ सादा पाठ & Lt; / div & gt;  

मैं जावास्क्रिप्ट लिखने का प्रयास कर रहा हूं जो # नई-पैरेंट डिवा के अंदर पूरे # स्थानांतरित-मुझे डिवा को स्थानांतरित करने का प्रयास कर रहा है, ऊपर टेक्स्ट, ऐसा ही है:

  & lt; div id = "new-parent" & gt; & Lt; div id = "move-me" & gt; & Lt; a href = "#" & gt; मैं एक लिंक हूं & lt; / a & gt; & Lt; / div & gt; कुछ सादा पाठ & Lt; / div & gt;  

यहां मेरे पास जावास्क्रिप्ट है:

  फ़ंक्शन moveDiv () {var moveable = document.getElementById ('move-me'); Var newParent = document.getElementById ('नए-मूल'); NewParent.parentNode.insertBefore (गतिशील, newParent.firstChild); }  

मैं डिबग करने के लिए फायरबग का उपयोग कर रहा हूं, और मैं देख सकता हूं कि newParent.firstChild एक TextNode है, लेकिन मुझे हमेशा निम्न त्रुटि मिलती है:

<पूर्व> नोड नहीं मिला "कोड:" 8 नएपरिप्रंट.पिंडनोड.इन्सर्ट पहले (चलने वाला, नयापरिवार.पहला बच्चा);

ऐसा लगता है कि insert before को एक तत्व नोड की आवश्यकता होती है और यह पाठ नोड पर काम नहीं करेगा ... यह सही है? यदि ऐसा है, तो क्या ऐसा करने का एक और अच्छा तरीका है?

नोट : मैं पैराग्राफ टैग को शामिल करने या सफेद स्थान को हटाने के लिए HTML को संशोधित या साफ़ नहीं कर सकता।

नहीं, insert before एक पाठ नोड के साथ ठीक पहले काम करने के लिए नोड के रूप में डालें । समस्या यह है कि जिस नोड को आप पहले सम्मिलित करने का प्रयास कर रहे हैं वह उस नोड का बच्चा नहीं है, जिसमें आप सम्मिलित हैं। आपको .parentNode बिट को निकालना होगा:

  newParent.insertBefore (चलने योग्य, newParent.firstChild);  

Comments

Popular posts from this blog

wpf - Line breaks and indenting for the XAML of a saved FlowDocument? -

gtk - Python Window Resize -

c# - read full xml file data over tcp -