la chiave e' clonare (passando come valore true, che vuol dire clona anche l' eventuale sottoalbero) il nodoDiRiferimento, da li' hai un nodo da appendere che si porta dietro tutti i figli,
poi fai come preferisci, nell' es. replaceChild del vecchio nodo con uno creato ex-novo a cui appendi il nodo clonato, ma potresti seguire anche altre strade...
codice:
<style type="text/css">
#radice {
background-color:#f00;
padding:1em 0;
}
#nodoAggiunto {
background-color:#ff6;
padding:1em 0;
}
#nodoDiRiferimento {
background-color:#0f0;
padding:1em 0;
}
</style>
<script type="text/javascript">
window.onload=function(){
var nd=document.getElementById('nodoDiRiferimento');
var ndClone=nd.cloneNode(true);
var newNode=document.createElement('div');
newNode.setAttribute('id','nodoAggiunto');
nd.parentNode.replaceChild(newNode,nd);
newNode.appendChild(ndClone);
}
</script>
codice:
<div id="radice">
<div id="nodoDiRiferimento">
primo figlio</p>
secondo figlio</p>
terzo figlio</p>
</div>
</div>
ciao