2. AJAX for dummies 2: il DOM

Continua da qui.

Il DOM(Document Object Model) è una rappresentazione logica della pagina HTML. E’ assimilabile ad un albero i cui nodi sono i tag.

E’ possibile visualizzare il DOM delle pagine con Mozilla Firefox, dal menù Strumenti – DOM Inspector, come nell’esempio.

Quindi gli elementi dell’albero sono di due tipi: i tag, che hanno degli attributi e possono avere figli, e i textNode, che rappresentano il testo contenuto tra i tag.


Ogni tag è un elemento, recuperabile tramite le funzioni dell’oggetto document:

getElementById() (es: var elem = document.getElementById(id) )
getElementsByTagName() (es: var elem = document.getElementsByTagName(tagname)[0] – E’ un array)

E’ possibile creare nuovi elementi:

createElement(tagname) (es: var elem = document.createElement("div"))
createTextNode(testo da inserire) (es: var textnode = document.createTextNode("Hello World!"))

Ma questi non saranno inseriti nel DOM, finchè non verranno chiamati i metodi opportuni.
Anche gli elementi hanno dei metodi che sono:

getElementsByTagName() (es: var elem = elem2.getElementsByTagName("td")[0], identico a document, restringe la ricerca degli elementi tra i figli dell’elemento)
setAttribute,
getAttribute,
removeAttribute
(gestione degli attributi dei tag, nell’esempio la tabella aveva gli attributi width, border, cellpadding, cellspacing)

C’è inoltre un attributo speciale, ovvero il nome del tag, che si recupera direttamente: elem.tagName.

Parentele: ogni nodo quindi ha una relazione con gli altri nodi dell’albero. Queste parentele sono utilizzabili per navigare tra i nodi, utilizzando alcune proprietà degli elementi:
childNodes,
firstChild,
lastChild,
nextSibling,
previousSibling,
parentNode
Nell’esempio potremmo applicare il seguente codice Javascript:
var body = document.getElementsByTagName("body")[0];
var array_figli = body.childNodes; //è un array da due elementi, i tag <p> e <table>
var tag_p = array_figli.firstChild;
var tag_table = array_figli.lastChild;
var tag_head = body.previousSibling;
var elem = body.nextSibling; //restituisce null
var tag_html = body.parentNode;

Inoltre abbiamo i metodi:

hasChildNodes() (restituisce true o false)
appendChild() (es: body.appendChild(document.createElement("div")), crea un tag <div> vuoto, e lo inserisce all’interno del <body>, nell’ultima posizione)
insertBefore() (inserisce prima, sullo stesso livello gerarchico)
replaceChild() (elem.replaceChild(elem2), sostituisce l’elemento nell’albero, i figli dell’elemento sostituito, se non recuperati in precedenza, vanno persi)
removeChild() (elem.removeChild(another_elem), rimuove l’elemento)
cloneNode(true/false) (restituisce un elemento identico, il booleano indica se copiare anche i figli)

Appendice: innerHTML
Nell’esempio della prima parte, viene usato innerHTML. Questa proprietà, accessibile sia in lettura che in scrittura, è la rappresentazione testuale di tutto il contenuto di un elemento.

Una Risposta a “2. AJAX for dummies 2: il DOM”

  1. [...] qualunque Yet another java addicted space monkey on the road « 0. Presentazioni 2. AJAX for dummies 2: il DOM [...]

Leave a Reply