HTMLElement को स्ट्रिंग में कैसे परिवर्तित करें


84

मैं सर्वर पक्ष के साथ डेटा का आदान-प्रदान करने के लिए जावास्क्रिप्ट में एक XML तत्व बनाने जा रहा हूं। मैंने पाया कि मैं इसे कर सकता हूं document.createElement। लेकिन मुझे नहीं पता कि इसे स्ट्रिंग में कैसे बदलना है। क्या ब्राउज़र में कोई एपीआई आसान है? या इस एपीआई सहित कोई जेएस लाइब्रेरी है?

EDIT: मैंने पाया कि ब्राउज़र API XMLSerializer, यह स्ट्रिंग को क्रमबद्ध करने का सही तरीका होना चाहिए।


जवाबों:


38

आप तत्व को क्लोन करके 'बाहरी-html' प्राप्त कर सकते हैं, इसे खाली, 'ऑफस्टेज' कंटेनर में जोड़ सकते हैं, और कंटेनर के इनर HTML को पढ़ सकते हैं।

यह उदाहरण एक वैकल्पिक दूसरा पैरामीटर लेता है।

तत्व के वंश को शामिल करने के लिए document.getHTML (तत्व, सत्य) को कॉल करें।

document.getHTML= function(who, deep){
    if(!who || !who.tagName) return '';
    var txt, ax, el= document.createElement("div");
    el.appendChild(who.cloneNode(false));
    txt= el.innerHTML;
    if(deep){
        ax= txt.indexOf('>')+1;
        txt= txt.substring(0, ax)+who.innerHTML+ txt.substring(ax);
    }
    el= null;
    return txt;
}

1
आप सीधे कॉल भी कर सकते हैं domElement.outerHTML( w3schools.com/jsref/prop_html_outerhtml.asp )
user007

146

तत्व outerHTMLगुण (नोट: संस्करण 11 के बाद फ़ायरफ़ॉक्स द्वारा समर्थित ) पूरे तत्व का HTML लौटाता है।

उदाहरण

<div id="new-element-1">Hello world.</div>

<script type="text/javascript"><!--

var element = document.getElementById("new-element-1");
var elementHtml = element.outerHTML;
// <div id="new-element-1">Hello world.</div>

--></script>

इसी तरह, आप innerHTMLकिसी दिए गए तत्व के भीतर HTML को प्राप्त करने के लिए, या innerTextकिसी तत्व के अंदर पाठ प्राप्त करने के लिए उपयोग कर सकते हैं (HTML HTML मार्कअप)।

यह सभी देखें

  1. आउटरएचटीएमएल - जावास्क्रिप्ट प्रॉपर्टी
  2. जावास्क्रिप्ट संदर्भ - तत्व

लेकिन ऐसा लगता है कि मैं संपत्ति HTML के साथ अंदर का पाठ प्राप्त नहीं कर सकता। मुझे लगता है कि मैं वास्तव में क्या चाहता हूँ HTML मार्कअप है।
जिओ x

3
outerHTML v11 से एफएफ में समर्थित है developer.mozilla.org/en-US/docs/Web/API/element.outerHTML
llamerr


1

ऐसा करने का सबसे आसान तरीका है कि उस तत्व के भीतर के HTML को tmp वेरिएबल में कॉपी करें और उसे खाली करें, फिर नए एलिमेंट को जोड़ें, और उसके बाद tmp वेरिएबल को कॉपी करें। यहाँ एक उदाहरण है जो मैंने jquery स्क्रिप्ट को सिर के ऊपर से जोड़ने के लिए उपयोग किया था।

var imported = document.createElement('script');
imported.src = 'http://code.jquery.com/jquery-1.7.1.js';
var tmpHead = document.head.innerHTML;
document.head.innerHTML = "";
document.head.append(imported);
document.head.innerHTML += tmpHead;

यह सरल है :)


0

एक tagNameसंपत्ति है, और एक attributesसंपत्ति भी है:

var element = document.getElementById("wtv");
var openTag = "<"+element.tagName;
for (var i = 0; i < element.attributes.length; i++) {
    var attrib = element.attributes[i];
    openTag += " "+attrib.name + "=" + attrib.value;
}
openTag += ">";
alert(openTag);

यह भी देखें कि HTML तत्व में सभी विशेषताओं के माध्यम से पुनरावृति कैसे करें? (मैंने किया!)

खुले और करीबी टैग के बीच की सामग्री प्राप्त करने के लिए आप शायद इसका उपयोग कर सकते हैं innerHTMLयदि आप सभी बाल तत्वों पर पुनरावृति नहीं करना चाहते हैं ...

alert(element.innerHTML);

... और फिर पास टैग के साथ फिर से प्राप्त करें tagName

var closeTag = "</"+element.tagName+">";
alert(closeTag);

मुझे डर है कि यह कोड लिखने के लिए कभी-कभी लगता है जिसे पूरा मार्कअप मिलता है।
जिओ x

अगर इसकी XML यह सब एक रूट नोड में होना चाहिए, हाँ? यदि ऐसा है, तो आपको केवल रूट नोड के लिए ऐसा करना होगा - इनरएचटीएमएल सभी प्रमुख ब्राउज़रों पर समर्थित है, और आपको रूट नोड में एक्स (एच) टीएमएल नेस्टेड देगा। (यानी सब कुछ!)
रिचर्ड जेपी ले गुएन

1
तत्व की विशेषताओं पर लूपिंग क्यों करें और इससे एक स्ट्रिंग 'टैग' का निर्माण करें? बस तत्व को ANOTHER एलिमेंट में लपेटें, और उस नए पैरेंट एलिमेंट के इनर HTML को लें। Voila, बाहरी HTML के लिए तत्काल समाधान।
मार्क बी

0

यह सभी के लिए लागू नहीं हो सकता है, लेकिन जब xml से निकालने पर मुझे यह समस्या थी, जिसे मैंने इसके साथ हल किया।

function grab_xml(what){
var return_xml =null;
    $.ajax({
                type: "GET",
                url: what,
                success:function(xml){return_xml =xml;},
        async:   false
        });
return(return_xml);
}

फिर xml प्राप्त करें:

var sector_xml=grab_xml("p/sector.xml");
var tt=$(sector_xml).find("pt");

तब मैंने तब xml लाइन निकालने के लिए यह फ़ंक्शन बनाया था, जब मुझे XML फ़ाइलों से पढ़ना पड़ता है, जिसमें html टैग होते हैं।

    function extract_xml_line(who){
    var tmp = document.createElement("div");
    tmp.appendChild(who[0]);
    var tmp=$(tmp.innerHTML).html();
    return(tmp);
}

और अब समाप्त करने के लिए:

var str_of_html= extract_xml_line(tt.find("intro")); //outputs the intro tag and whats inside it: helllo  <b>in bold</b>

0

मैं कोणीय का उपयोग कर रहा था, और उसी चीज की आवश्यकता थी, और इस पद पर उतरा।

@ViewChild('myHTML', {static: false}) _html: ElementRef;
this._html.nativeElement;

0

माना कि आपका तत्व संपूर्ण है [object HTMLDocument]। आप इसे स्ट्रिंग में परिवर्तित कर सकते हैं :

const htmlTemplate = `<!DOCTYPE html><html lang="en"><head></head><body></body></html>`;

const domparser = new DOMParser();
const doc = domparser.parseFromString(htmlTemplate, "text/html"); // [object HTMLDocument]

const doctype = '<!DOCTYPE html>';
const html = doc.documentElement.outerHTML;

console.log(doctype + html);

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.