Arbres DOM (OC informatique, EPFL)

27
Arbres DOM (OC informatique, EPFL)

description

Arbres DOM (OC informatique, EPFL). Création d&#039;éléments HTML. var body = document.body var titre = document.createElement("h2") body.appendChild(titre) titre.appendChild(document.createTextNode("Leçon sur le DOM")) Equivalent à < h2 > Leçon sur le DOM . - PowerPoint PPT Presentation

Transcript of Arbres DOM (OC informatique, EPFL)

Page 1: Arbres DOM (OC informatique, EPFL)

Arbres DOM(OC informatique, EPFL)

Page 2: Arbres DOM (OC informatique, EPFL)

Création d'éléments HTML

var body = document.body

var titre = document.createElement("h2")

body.appendChild(titre)

titre.appendChild(document.createTextNode("Leçon sur le DOM"))

Equivalent à

<body onload="execute()">    <h2>Leçon sur le DOM</h2></body>

Page 3: Arbres DOM (OC informatique, EPFL)

Adjonction d'éléments HTMLvar paragraphe = document.createElement("p")

body.appendChild(paragraphe)

paragraphe.appendChild(document.createTextNode("DOM signifie "))

var span = document.createElement("span")

span.style.fontWeight = "bold"

span.style.fontStyle = "italic"

paragraphe.appendChild(span) object model"))

span.appendChild(document.createTextNode("document 

Produit

<body onload="execute()">

    <h2>Leçon sur le DOM</h2>

    <p>DOM signifie <i><b>document object model</b></i></p>

</body>

Page 4: Arbres DOM (OC informatique, EPFL)

html

head

body

table

html

head body

table

tr

td td

texte1 texte2

tr

td td

texte3 texte4

Deux représentations d’un arbre HTML

<body><table>

<tr><td>text1</td><td>text2</td>

</tr><tr>

<td>text3</td><td>text4</td>

</tr></table>

</body>

Page 5: Arbres DOM (OC informatique, EPFL)

Un arbre (terminologie)

racine

feuille nœud

nœud

feuille feuille

parent

enfant

Page 6: Arbres DOM (OC informatique, EPFL)

Attributs des nœuds

html

head body

table

tr tr

document.body(défini par le navigateur)

aNode

aNode.tagName

node.nodeName: BODY, TABLE, TR, TD, #text

node.textContent: texte du sous-arbre

Page 7: Arbres DOM (OC informatique, EPFL)

Relations des nœuds

html

head body

table - childNodes

tr tr

aNode

aNode.childNodes[1]aNode.lastChild

node.childNodes.lengthaNode.childNodes[0]aNode.firstNode

aNode.parentNode

Page 8: Arbres DOM (OC informatique, EPFL)

Accès à un élément d’un arbre<body>

<table><tr>

<td>text1</td><td>text2</td>

</tr><tr>

<td>text3</td><td>text4</td>

</tr></table>

</body> Attention, les nœuds d’espaces ne sont pas pris en compte

document.body.childNodes[0] .childNodes[0] .childNodes[1] .childNodes[0].value

document.body.firstChild .firstChild .childNodes[1] .firstChild.value

Page 9: Arbres DOM (OC informatique, EPFL)

Adjonction d’un nœud

unNoeud = document.getElementById("unTR")

nouvTD = document.createElement("TD")

unNoeud.appendChild(nouvTD)

<table><tr id="unTR">

<td>text1</td><td>text2</td><td></td>

</tr></table>

Page 10: Arbres DOM (OC informatique, EPFL)

Adjonction d’un texte

<table><tr id="unTR">

<td>text1</td><td>text2</td><td>mon texte</td>

</tr></table>

txt = document.createTextNode("mon texte")

nouvTD.appendChild(txt)

Page 11: Arbres DOM (OC informatique, EPFL)

Elimination d’un nœud

unParent.removeChild(unNoeud)

unParent.removeChild(unParent.childNodes[1])

unNoeud.parentNode.removeChild(unNoeud)

Page 12: Arbres DOM (OC informatique, EPFL)

Parcours d’un arbre

function parcourtEnfants(noeud) { // définitionfor (var i=0 ; i<noeud.childNodes.length ; i++) {

alert(noeud.childNodes[i].nodeName)}

} leNoeud:

leNoeud = document.getElementById("leNoeud")

parcourtEnfants(leNoeud) // appel

liste

identité identité

Page 13: Arbres DOM (OC informatique, EPFL)

Un étage de l’arbre

function parcourtPetitsEnfants(arg) {

for (var i=0 ; i<arg.childNodes.length ; i++) {

var nd = arg.childNodes[i]

alert(nd.nodeName)

parcourtEnfants(nd)

}

}

Page 14: Arbres DOM (OC informatique, EPFL)

Parcours récursif de l’arbre

function parcourtPetitsEnfants(arg) {

for (var i=0 ; i<arg.childNodes.length ; i++) {

var nd = arg.childNodes[i]

alert(nd.nodeName)

parcourtPetitsEnfants (nd)

}

}

Page 15: Arbres DOM (OC informatique, EPFL)

Tableaux associatifs et syntaxe objets

id = [ ]

id [ "prenom" ] = "Peter"

id [ "nom" ] = "Tagasi"

id [ "prenom" ] = "Peter"

id = { prenom : "Peter", nom : "Tagasi" }

id.prenom == "Peter"

Page 16: Arbres DOM (OC informatique, EPFL)

Tableaux associatifs, indicés et objets

id = { prenom : "Peter", nom : "Tagasi" }

id.prenom == "Peter"

ids = [{ prenom : "Peter", nom : "Tagasi" },

{ prenom : "Hans", nom : "Vogel" }]

ids[1].nom == "Vogel"

Page 17: Arbres DOM (OC informatique, EPFL)

Tableaux associatif, indicés et objetslst = { liste : [

{ { identité : { prenom : "Peter", nom : "Tagasi" 

}},

{ { identité : { prenom : "Hans", nom : "Vogel"

}}

]}

lst.liste[0].identite.nom

Page 18: Arbres DOM (OC informatique, EPFL)

Parcours automatique et récursif

for (var key in tableau) { if ((typeof tableau[key] == object) && tableau[key].length…) for (var i=0; i< … …}

// un bel exercice !

Page 19: Arbres DOM (OC informatique, EPFL)

Troisième syntaxe d’arbre: XML

{prenom : "Peter", nom : "Tagasi"}

<prenom>Peter</prenom>

<nom>Tagasi</nom>

Page 20: Arbres DOM (OC informatique, EPFL)

Liste d’emprunts<emprunts>

<personne><identite>

<prenom>Peter</prenom><nom>Tagasi</nom>

</identite><livres>

<titre>Tarzan dans les arbres</titre><titre>Jane sur une branche</titre>

</livres></personne>

</emprunts>

Page 21: Arbres DOM (OC informatique, EPFL)

Lecture / écriture de fichiers de texte et XML (arbres)

sur le serveur qui a envoyé la page

Page 22: Arbres DOM (OC informatique, EPFL)

Lecture synchrone d’un fichier de texte

function makeRequest(URL) { // définitionhttp_request = new XMLHttpRequest()http_request.open('GET', URL, false)http_request.send(null)return http_request.responseText

}

var txt = makeRequest("Tree.xml") // appel

var aTbl = txt.getElementsByTagName("personne")

Page 23: Arbres DOM (OC informatique, EPFL)

Lecture synchrone d’un fichier XML

function makeRequest(URL) { // définitionhttp_request = new XMLHttpRequest()http_request.open('GET', URL, false)http_request.send(null)return http_request.responseXML

}

var xml = makeRequest("Tree.xml") // appel

var aTbl = xml.getElementsByTagName("personne")

Page 24: Arbres DOM (OC informatique, EPFL)

Accès à un arbre XML(2 possibilités)

xml.getElementsByTagName("emprunts")[0]

.childNodes[0].childNodes[0]

.childNodes[0].firstChild.nodeValue

xml.getElementsByTagName("personne")[0]

.getElementsByTagName("titre")[1]

.firstChild.nodeValue

Page 25: Arbres DOM (OC informatique, EPFL)

Appel asynchrone (AJAX)function makeRequest(URL, alertFunction) {

http_request = new XMLHttpRequest()http_request.onreadystatechange = function() {

alertFunction(http_request,URL)}http_request.open('GET', URL, true)http_request.send(null)return

}var alertContents = function (http_local_request, URL) {

document.getElementById("Display").innerHTML= http_local_request.responseXML

}

makeRequest("fiches.xml", alertContents) // appel

Page 26: Arbres DOM (OC informatique, EPFL)

Ecriture d’un fichier XML

var temp = [ ]

temp.push("<html>")

temp.push("<h1>" + txt + "<h1>")

temp.push("</html>")

File.write( "tmp.xml", temp.join("\n") )

Page 27: Arbres DOM (OC informatique, EPFL)

Fichiers disponibles sur LemanOS

http://lti.epfl.ch/Livre

http://lti.epfl.ch/Livre/AJAX/