2013-03-26 2 views
-1

Возможно, это было задано раньше и ответили, или вопрос был закрыт, прежде чем кто-то сможет правильно ответить на него. Только в случае, если кто-то Googles для него вот ответ:Как преобразовать строку в элемент DOM

https://developer.mozilla.org/en-US/docs/DOM/DOMParser

var parser = new DOMParser(); 
var doc = parser.parseFromString(stringContainingXMLSource, "application/xml"); 
// returns a Document, but not a SVGDocument nor a HTMLDocument 

parser = new DOMParser(); 
doc = parser.parseFromString(stringContainingXMLSource, "image/svg+xml"); 
// returns a SVGDocument, which also is a Document. 

parser = new DOMParser(); 
doc = parser.parseFromString(stringContainingHTMLSource, "text/html"); 
// returns a HTMLDocument, which also is a Document. 



/* 
* DOMParser HTML extension 
* 2012-09-04 
* 
* By Eli Grey, http://eligrey.com 
* Public domain. 
* NO WARRANTY EXPRESSED OR IMPLIED. USE AT YOUR OWN RISK. 
*/ 

/*! @source https://gist.github.com/1129031 */ 
/*global document, DOMParser*/ 

(function(DOMParser) { 
    "use strict"; 

    var 
     DOMParser_proto = DOMParser.prototype 
    , real_parseFromString = DOMParser_proto.parseFromString 
    ; 

    // Firefox/Opera/IE throw errors on unsupported types 
    try { 
     // WebKit returns null on unsupported types 
     if ((new DOMParser).parseFromString("", "text/html")) { 
      // text/html parsing is natively supported 
      return; 
     } 
    } catch (ex) {} 

    DOMParser_proto.parseFromString = function(markup, type) { 
     if (/^\s*text\/html\s*(?:;|$)/i.test(type)) { 
      var 
       doc = document.implementation.createHTMLDocument("") 
      ; 

      doc.body.innerHTML = markup; 
      return doc; 
     } else { 
      return real_parseFromString.apply(this, arguments); 
     } 
    }; 
}(DOMParser)); 
+0

Мы ценим ваши усилия, чтобы помочь! Пожалуйста, задайте вопрос и ответ отдельно. Затем отметьте ответ как принятый. –

+0

Полагаю, какой бы вопрос, о котором вы говорили, был закрыт как дубликат этого: http://stackoverflow.com/questions/3103962/converting-html-string-into-dom-elements. Это не вопрос. Вы должны отправить ответ на соответствующий вопрос. –

+0

Хорошо, я отправлю ответ в качестве ответа. Просто посмотрите на вопрос, идущий в туалет, потому что он был неправильно спрошен, но, скорее всего, появится в Google в какой-то момент, так как op не удалит его. Если админы закрывают вопрос, лучше удалить его или перефразировать, чтобы будущие помощники помощи не наткнулись на оставшуюся без ответа мусор. – HMR

ответ

1

https://developer.mozilla.org/en-US/docs/DOM/DOMParser

var parser = new DOMParser(); 
var doc = parser.parseFromString(stringContainingXMLSource, "application/xml"); 
// returns a Document, but not a SVGDocument nor a HTMLDocument 

parser = new DOMParser(); 
doc = parser.parseFromString(stringContainingXMLSource, "image/svg+xml"); 
// returns a SVGDocument, which also is a Document. 

parser = new DOMParser(); 
doc = parser.parseFromString(stringContainingHTMLSource, "text/html"); 
// returns a HTMLDocument, which also is a Document. 

Некоторые браузеры не поддерживают текст/html так вот дополнительный код с сайта MDN добавить поддержку для текста/html

/* 
* DOMParser HTML extension 
* 2012-09-04 
* 
* By Eli Grey, http://eligrey.com 
* Public domain. 
* NO WARRANTY EXPRESSED OR IMPLIED. USE AT YOUR OWN RISK. 
*/ 

/*! @source https://gist.github.com/1129031 */ 
/*global document, DOMParser*/ 

(function(DOMParser) { 
    "use strict"; 

    var 
     DOMParser_proto = DOMParser.prototype 
    , real_parseFromString = DOMParser_proto.parseFromString 
    ; 

    // Firefox/Opera/IE throw errors on unsupported types 
    try { 
     // WebKit returns null on unsupported types 
     if ((new DOMParser).parseFromString("", "text/html")) { 
      // text/html parsing is natively supported 
      return; 
     } 
    } catch (ex) {} 

    DOMParser_proto.parseFromString = function(markup, type) { 
     if (/^\s*text\/html\s*(?:;|$)/i.test(type)) { 
      var 
       doc = document.implementation.createHTMLDocument("") 
      ; 

      doc.body.innerHTML = markup; 
      return doc; 
     } else { 
      return real_parseFromString.apply(this, arguments); 
     } 
    }; 
}(DOMParser)); 

IE8 и ниже

Некоторые браузеры, такие как IE8 и ниже, не имеют DomParser, вы можете разобрать строку HTML следующим образом:

var div=document.createElement("div"); 
div.innerHTML=HTMLString; 
var anchors=div.getElementsByTagName("a"); 
Смежные вопросы