Ajax responseText als HTML behandeln

Code:
var dummy = document.createElement('div');
    dummy.innerHTML=xmlHttp.responseText;

das hier kann nur funktionieren, wenn dummy in das Dokument auch integriert wird, zB über appendChild()
 
Hier mal eine Hilfsfunktion, welche ein HTML-Dokument anhand von HTML-Code erstellt und dies zurückliefert:
Code:
<script type="text/javascript">
<!--
function loadHTML(strHTML)
{
  var doc=null;
  if(document.all && !window.opera)//IE
  {
    doc=document.createDocumentFragment();
    doc.appendChild(doc.createElement('root'));
    doc.firstChild.innerHTML=strHTML;
  }
  else
  {
    if(document.implementation)
    {
      if(window.opera || typeof window.mozInnerScreenX!='undefined')//Opera + FF
      {
        doc=document.implementation.createDocument ('http://www.w3.org/1999/xhtml', 'root',  null);
        doc.documentElement.innerHTML=strHTML
      }
      else//chrome+safari
      {
        doc=document.implementation.createDocument ('http://www.w3.org/1999/xhtml', '',  null);
        var root=doc.createElement('root');
                root.innerHTML=strHTML;
                doc.appendChild(root);
      }
    }
  }
  return doc;
} 
//Kurzer test
alert(loadHTML('<b><i id="elementID">Es geht</i></b>').getElementById('elementID').innerHTML);


//-->
</script>

Der Test zeigt, auch getElementById() ist dort nutzbar.
Getestet in
FF3.6.8
Opera9.5
Win-Safari 5.0.1
Chrome5.0
IE6-8
 
Zuletzt bearbeitet:
Hey,
vielen Dank für den Code. Ich habe es aber jetzt schon anders gelöst und klappt gut.

Aber vllt hat jemand noch eine andere Idee wie ich mein select-Element "tauschen" kann. Ich will grad die ganzen option-Einträge gegen andere tauschen.

Dafür habe ich auch eine Lösung, aber der Interesse halber, vllt hat ja noch jemand eine bessere.

Hier meine Lösung:

Javascript:
var response = xmlHttp.responseText; // Die ganze HTML Seite als Rückgabe
			
var dummy = document.createElement('div'); // Dummyelement
dummy.innerHTML = response; // HTML Code in das Dummy Element einfügen
			
var selectElements = dummy.getElementsByTagName('select'); // Alle select-Element auswählen
var selectElement = selectElements[0]; // Das erste (und einzige) auswählen
			
var categorys = document.getElementById('category'); // Aus meiner HTML Seite das select-Element mit der ID category auswählen
			
var categorysLength = categorys.length; // Anzahl der aktuellen option-Einträge
var selectElementLength = selectElement.length - 1; // Anzahl der neuen option-Einträge - 1 sodass die Variable auf das letzte Element zeigen kann
			
// Dem select-Element das neue Element hinzufügen 
categorys.options[categorysLength] = selectElement.options[selectElementLength];

Gruß
 

Neue Beiträge

Zurück