Nessun risultato. Prova con un altro termine.
Guide
Notizie
Software
Tutorial

Esperimenti "scientifici" con il DOM

Vediamo come sia possibile trasferire o copiare integralmente il contenuto di elementi di pagina con il DOM.
Vediamo come sia possibile trasferire o copiare integralmente il contenuto di elementi di pagina con il DOM.
Link copiato negli appunti

Una cosa che mi ha sempre affascinato di Javascript è l'abilità  di sintesi e la capacità  di manipolare agevolmente elementi di pagina attraverso il DOM.

Ho così pensato di introdurre due piccoli "esperimenti scientifici" ovvero il teletrasporto e la clonazione.

Nel teletrasporto il contenuto di un dato elemento viene interamente trasferito in un secondo elemento grazie ad un link che effettua la chiamata alla funzione DoTransfer che è sorprendentemente breve, appena quattro righe:


function DoTransfer(a,b){
var from=document.getElementById(a), to=document.getElementById(b);
while(from.hasChildNodes())
    to.appendChild(from.firstChild);
}

La funzione, dopo aver reperito nel DOM i due elementi individuati dagli id passati come parametro procede a trasferire uno ad uno tutti gli elementi figli dalla sorgente alla destinazione, finché l'elemento di partenza non resta vuoto. La cosa interessante da notare è che in realtà  gli elementi trasferiti non vengono esplicitamente rimossi dall'origine, ma lo script funziona. II motivo è semplice, ed è indicato dalle specifiche DOM del W3C: se il nodo usato come parametro di appendChild è presente nell'albero DOM, questo viene prima rimosso.

Nella clonazione il contenuto di un dato elemento viene interamente copiato in un secondo elemento grazie un link che effettua la chiamata alla funzione DoClone, anch'essa molto breve:


function DoClone(a,b){
var from=document.getElementById(a), to=document.getElementById(b);
for(var i=0;i<from.childNodes.length;i++)
    to.appendChild(from.childNodes[i].cloneNode(true));
}

In questo caso dato che l'elemento origine non verrà  modificato, andrà  effettuato un ciclo for su tutti i suoi figli. Per evitare che questi vengano rimossi dalla sorgente prima di inserirli nella destinazione dovremo effettuarne una copia con il metodo cloneNode. Il parametro true è indispensabile: indicherà  infatti di copiare ricorsivamente l'intero sottoalbero dell'elemento figlio come indicato nelle specifiche. La collezione childNodes restituisce infatti solo i figli diretti di un elemento.

Questo è tutto per ora: al di là  delle applicazioni pratiche dei due esempi credo che possano costituire un ottimo spunto se vi troverete a dover trasferire o copiare elementi di pagina attravero il DOM. Alla prossima.

Ti consigliamo anche