2010-12-30 27 views
0

So habe ich eine HTML-Seite mit differents div Elemente und ich habe einige Links, die ein XML-Dokument ladenersetzen Htmlelement mit XML Elemente

Die XML-Datei sieht so aus:

<boxes> 
<div class="grid_4 box" id="siteBox"> 
    <h3>Lorem Ipsum</h3> 
    <ul class="listItem"> 
    ... 
    </ul> 
</div> 
<div class="grid_4 box" id="emplBox"> 
    <h3>Lorem Ipsum</h3> 
    <ul class="listItem"> 
    ... 
    </ul> 
</div> 
</boxes> 

Ich möchte alle Das Div in meiner HTML-Seite ersetzt durch ihre Entsprechung (gleiche ID) aus der XML-Datei

Hier ist der Anfang meiner Javascript-Datei.

function ajaxLink() { 
if (window.XMLHttpRequest) { 
    xmlhttp = new XMLHttpRequest(); 
} else { 
    xmlhttp = new ActiveXObject("Microsoft.XMLHTTP"); 
} 

xmlhttp.onreadystatechange=function() { 
    if (xmlhttp.readyState==4 && xmlhttp.status==200) { 

    var xmlDoc = xmlhttp.responseXML.documentElement; 

    for(var i = 0; i < xmlDoc.childElementCount; ++i) { 
    c = xmlDoc.children[i]; //Element 
    d = document.getElementById(c.getAttribute("id")); //HTMLDivElement 

    } 
    } 
} 

xmlhttp.open("GET", "file.xml", true); 
xmlhttp.send(); 
} 

Könnten Sie mir bitte dabei helfen?

Danke

Thomas

+0

Off-Topic: FWIW, es ist "ersetzen mit", nicht "ersetzen durch". (Englisch scheint nicht Ihre Muttersprache zu sein, aber Ihr Englisch ist eindeutig ausgezeichnet, also dachte ich, dass Sie die Info nicht stören würden.) –

Antwort

0

`var newNode = document.createElement ('div');

// ID zuordnen, die Klasse und innerHTML- von C nach newNode //

d.parentNode.replaceChild (newNode, d); `

+0

Danke, aber wie kann ich 'innerHTML' von c auf newNode zuweisen? 'c' ist ein XML-Element und hat keine Eigenschaft 'innerHTML'. – dellC

+0

Es hat Kinder. Ich meinte nicht wörtlich "innerHTML", sondern den Inhalt des XML-Knotens (nodeValue?) Mit dem innerHTML des neuen DOM-Knotens zu verknüpfen. – maus

0

Dieser Code ist nicht getestet. Ich denke, ich folge dem, was du versuchst zu tun. Aktualisieren Sie in Ihrer Schleife nach dem Zurückgeben der Antwort das innerHTML des Dokumentknotens mit der innerXML des xml-Knotens. Da ich keine einfache Möglichkeit kenne, nur den inneren Xml in Firefox und Chrome zu bekommen.

Dies ist hier seit IE hat eine andere Methode der XML-Serialisierung. Ich bin mir nicht sicher, ob outerXML ist, was Sie wollen, könnte xml oder outerXml sein.

function getXml(node) { 
    if (window.XMLSerializer) { 
     return new XMLSerializer().serializeToString(node); 
    } 

    if (node.outerXML) { 
     return node.outerXML; 
    } 

    return ''; 
}