Ahoj, řeším jeden problém a nevím si rady:
přes Ajax si načtu xml soubor, například:
<?xml version="1.0" encoding="UTF-8" ?>
<result>
<fieldset>
<input type="text" name="asdf" value="" />
</fieldset>
</result>
A jde mi jednoduše o to vložit obsah elementu result do (x)html stránky. (Nemůžu to udělat přes innerHTML, protože při jeho použití se odstraní všechny value v inputech, které už vložené mám a do kterých uživatel něco napsal.)
A proto to řeším přes DOM, nějak takhle:
// xmlHttp : XMLHttpRequest
// While proto, když je v resultu víc elementů na stejné ůrovni.
while( xmlHttp.responseXML.getElementsByTagName( 'result' )[ 0 ].hasChildNodes() )
{
document.getElementById( 'asdf' ).appenChild( xmlHttp.responseXML.getElementsByTagName( 'result' )[ 0 ].firstChild );
}
Tohle dáseříct funguje, až na malý problém. Pokud se podívám jak vypadá zdrojový kód (Opera Dragonfly), vidím že se elementy z xml prvku result vložily správně (ve zdrojáku jsou zobrazené tak jak mají být).
Jde ale o to že Opera, FireFox ani IE vložené elementy nezobrazí (když je zkouším vložit tak že místo z toho xml souboru je v JS přímo vytvořím přes createElement tak to jde).
Nenapadá vás co s tím?
Došel jsem akorát na to že stačí hned po vložení elementů do xhtml přiřadit prvku, do kterého to vkládám svoje vlastní innerHTML tak se to zobrazí, jenže tím příjdu o vyplněné inputy, tak jak jsem psal na začátku.
Funguje to teda takhle, jenže je to (pro mě) nepoužitelné a nesmyslné:
while( xmlHttp.responseXML.getElementsByTagName( 'result' )[ 0 ].hasChildNodes() )
{
document.getElementById( 'asdf' ).appenChild( xmlHttp.responseXML.getElementsByTagName( 'result' )[ 0 ].firstChild );
}
document.getElementById( 'asdf' ).innerHTML = document.getElementById( 'asdf' ).innerHTML;
Moc díky za reakce...