Cours Java Script Dom
Cours Java Script Dom
Cours Java Script Dom
Achref El Mouelhi
1 Introduction
10 Identifiant en JavaScript
11 Évènements
Associer un évènement à un élément
Objet event
Supprimer un évènement
Annuler un évènement
Arrêter la propagation
JavaScript
JavaScript nous permet, via des objets prédéfinis, d’avoir des informations sur
le visiteur
son navigateur
r e f E
ch
©A
JavaScript
JavaScript nous permet, via des objets prédéfinis, d’avoir des informations sur
le visiteur
son navigateur
r e f E
ch
©A
window
JavaScript
I
quatre autres objets importants : document, location,
H ©
navigator, screen
UEL
O
f E LM
des méthodes basiques comme alert, confirm
r e
les objets comme String, Date, Math...
ch
©A
toute variable, objet... définis par le développeur
...
JavaScript
L’objet document contient
contentType : text/html, text/xml...
toutes les balises HTML constituant le document (DOM)
les attributs et leurs valeurs
H I ©
UEL
... O
f E LM
ch r e
©A
JavaScript
L’objet document contient
contentType : text/html, text/xml...
toutes les balises HTML constituant le document (DOM)
les attributs et leurs valeurs
H I ©
UEL
... O
f E LM
L’objet location contient
ch r e
©A
hostname : localhost...
port : 3000
protocol : http
...
H & H: Research and Training 7 / 61
Introduction
JavaScript
L’objet navigator contient
language : fr FR...
connection : 4G
cookieEnabled : true
H I ©
UEL
...
O
f E LM
ch r e
©A
JavaScript
L’objet navigator contient
language : fr FR...
connection : 4G
cookieEnabled : true
H I ©
UEL
...
O
f E LM
L’objet screen contient
ch r e
height ©A
width
orientation
...
H & H: Research and Training 8 / 61
Introduction
JavaScript
DOM : Document Object Model
Interface de programmation (API) pour les documents XML et
HTML
H I ©
Graphiquement, ça correspond à un arbre dont les nœuds sont
les balises HTML
U EL
Avant standardisation par le L M O
W3C, chaque navigateur avait son
propre DOM.
re f E
c h
© Ascripts pour modifier un document HTML en
Utilisé par les
ajoutant un nœud
modifiant un autre
remplaçant un premier par un deuxième
supprimant un autre
JavaScript
L MO
selon le nom de la balise : getElementsByTagName()
r e f E
A ch
selon l’attribut name : getElementsByName()
selon un© sélecteur CSS : querySelectorAll() ou
querySelector()
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale
=1.0">
<title>My JS Page</title>
H I ©
EL
<link rel="stylesheet" href="style.css">
</head>
O U
<body>
<div id=container>
f E LM
ch r e
Considérons les paragraphes suivants :
©A
<p class=blue name=parConteneur> bonjour </p>
<p class=red name=parConteneur> bonsoir, voici
<a href="http://www.lsis.org/elmouelhia/"> ma page </a>
</p>
<p class=blue name=parConteneur> salut </p>
</div>
<script src="script.js"></script>
</body>
</html>
H & H: Research and Training 11 / 61
Récupérer un élément HTML
JavaScript
Contenu de style.css
.red {
}
color: red;
H I ©
UEL
O
.blue {
color: blue;
f E LM
}
ch r e
© A
.green {
color: green;
}
JavaScript
H I ©
U EL
O
f E LM
ch r e
©A
JavaScript
H I ©
Ou sans passer par l’objet window U EL
M O
E L
var container = document.getElementById("container");
f
chr e
console.log(container.innerHTML);
© A
JavaScript
H I ©
Ou sans passer par l’objet window U EL
M O
E L
var container = document.getElementById("container");
f
chr e
console.log(container.innerHTML);
© A
Remarque
JavaScript
JavaScript
H I ©
U EL
O
f E LM
ch r e
©A
H I ©
Ou aussi
U EL
O
LM
var bleus = container.getElementsByClassName("blue");
©A
}
H I ©
Ou aussi
U EL
O
LM
var bleus = container.getElementsByClassName("blue");
©A
}
Remarque
JavaScript
JavaScript
JavaScript
H I ©
Récupérer un élément selon un sélecteur CSS 3
U E L
var pbleus = document.querySelectorAll("p.blue");
for (let bleu of pbleus) {
L MO
f E
console.log(bleu.innerHTML);
r e
}
A ch
©
JavaScript
JavaScript
JavaScript
JavaScript
r e f E
console.log(lien);
ch
©A
// affiche https://www.w3schools.com
JavaScript
JavaScript
JavaScript
JavaScript
Remarque
JavaScript
Remarque
JavaScript
H I ©
U EL
O
f E LM
ch r e
©A
JavaScript
H I ©
U EL
MO
Modifier une classe d’un élément HTML
E L
container.className = "blue";
f
r e
console.log(container.className);
ch
© A
JavaScript
H I ©
U EL
MO
Modifier une classe d’un élément HTML
E L
container.className = "blue";
f
r e
console.log(container.className);
ch
© A
Ajouter une nouvelle classe à un élément HTML
container.className += " red";
console.log(container.className);
JavaScript
Récupérer la liste des classes d’un élément HTML
var container = document.getElementById("container");
var list = container.classList;
console.log(list);
H I ©
U EL
O
f E LM
ch r e
©A
JavaScript
Récupérer la liste des classes d’un élément HTML
var container = document.getElementById("container");
var list = container.classList;
console.log(list);
H I ©
Ajouter une classe à un élément HTML
U EL
var container = document.getElementById("container"); O
var list = container.classList;
f E LM
list.add(’green’);
console.log(list);
ch r e
©A
JavaScript
Récupérer la liste des classes d’un élément HTML
var container = document.getElementById("container");
var list = container.classList;
console.log(list);
H I ©
Ajouter une classe à un élément HTML
U EL
var container = document.getElementById("container"); O
var list = container.classList;
f E LM
list.add(’green’);
console.log(list);
ch r e
© A
Ajouter des classes à un élément HTML
var container = document.getElementById("container");
var list = container.classList;
list.add(’red’,"blue");
console.log(list);
JavaScript
JavaScript
©A
list.remove(’red’, ’green’);
console.log(list);
JavaScript
JavaScript
JavaScript
H I ©
EL
length : retourne le nombre de classes.
O U
LM
contains(classe) : retourne true si classe appartient à
classList, false sinon.
r e f E
A ch la classe d’indice i si i est inférieur à la
item(i) : retourne
©de la liste, null sinon.
longueur
JavaScript
H I ©
value : pour récupérer la valeur saisie dans une zone de saisie
EL
(input, textarea...)
M OU
checked : pour déterminer
f E Lune case à cocher ou un bouton
si
radio a été cochéh
c r
ou e
non (true ou false)
... ©A
JavaScript
JavaScript
JavaScript
O U
f E LM
ch r e
©A
JavaScript
O U
f E LM
h r e
Récupérer le contenu d’un élément HTML avec textContent
=c
var container A document.getElementById("container");
©
container.textContent += "<p> hello </p>";
console.log(container.textContent);
console.log(container.innerHTML);
JavaScript
Modifier la couleur
var container = document.getElementById("container");
container.style.color = "red";
H I ©
UEL
O
f E LM
ch r e
©A
JavaScript
Modifier la couleur
var container = document.getElementById("container");
container.style.color = "red";
H I ©
U ELséparés par -, il faut
Pour les propriétés CSS composées de deux mots
M O
supprimer - mettre la propriété en camelCase
f E L
ch e
var container = document.getElementById("container");
r
container.style.backgroundColor = "red";
© A
JavaScript
Modifier la couleur
var container = document.getElementById("container");
container.style.color = "red";
H I ©
U ELséparés par -, il faut
Pour les propriétés CSS composées de deux mots
M O
supprimer - mettre la propriété en camelCase
f E L
ch e
var container = document.getElementById("container");
r
container.style.backgroundColor = "red";
© A
Remarque
Un élément HTML, ayant classe red qui modifie la couleur de fond en rouge,
n’a pas forcément la valeur red attribuée au style.backgroundColor
JavaScript
JavaScript
©A
var container = document.getElementById("container");
var parent = container.parentNode;
console.log(parent.nodeName);
JavaScript
JavaScript
©A
var container = document.getElementById("container");
var dernierFils = container.lastElementChild;
console.log(dernierFils.nodeName);
JavaScript
JavaScript
©A
var container = document.getElementById("container");
var dernierFils = container.lastChild;
console.log(dernierFils.nodeName);
JavaScript
JavaScript
JavaScript
JavaScript
JavaScript
Étapes
H I ©
Créer l’élément UEL
L MO
r e f E
Préparer ses attributs [et valeurs]
ch
L’ajouter au document
A
©
JavaScript
Créer un élément de type p
var par = document.createElement("p");
H I ©
UEL
O
f E LM
ch r e
©A
JavaScript
Créer un élément de type p
var par = document.createElement("p");
f E
var text = document.createTextNode("JS paragraph");
r e
ch
par.appendChild(text);
©A
JavaScript
Créer un élément de type p
var par = document.createElement("p");
f E
var text = document.createTextNode("JS paragraph");
r e
ch
par.appendChild(text);
©A
Ajouter l’élément au DOM
var container = document.getElementById("container");
container.appendChild(par);
JavaScript
Créer un élément de type p
var par = document.createElement("p");
f E
var text = document.createTextNode("JS paragraph");
r e
ch
par.appendChild(text);
©A
Ajouter l’élément au DOM
var container = document.getElementById("container");
container.appendChild(par);
JavaScript
H I ©
On peut aussi utiliser
UEL
O
LM
.insertBefore(newnode, existingnode) : pour insérer
newnode avant existingnode
r e f E
ch
©A
JavaScript
JavaScript
Exemple : HTML Le fichier style.css
<script src="script.js"></script>
</body>
ch r e
</html>
Le script script.js
©A
var p = document.getElementById(’first’);
p.insertAdjacentHTML("afterbegin","<p class=skyblue> afterbegin </p>");
p.insertAdjacentHTML("afterend","<p class=pink> afterend </p>");
p.insertAdjacentHTML("beforebegin","<p class=pink> beforebegin </p>");
p.insertAdjacentHTML("beforeend","<p class=skyblue> beforeend </p>");
JavaScript
Le résultat
beforebegin
H I ©
afterbegin
UEL
O
f E LM
ch r e bonjour
©A beforeend
afterend
JavaScript
Quelques opérations
replaceChild : pour remplacer un nœud H I ©
UEL
cloneNode() : pour cloner un nœud O
f E LM
ch r e
removeChild() : pour supprimer un nœud fils
©A
hasChildNodes() : pour vérifier l’existence d’au moins un
nœud enfant
JavaScript
Pour récupérer un élément selon son id, une solution possible consite à utiliser
la méthode getElementById()
H I ©
UEL
O
f E LM
ch r e
©A
JavaScript
Pour récupérer un élément selon son id, une solution possible consite à utiliser
la méthode getElementById()
H I ©
UEL
O
LM
Tous les éléments HTML ayant un identifiant seront chargés dans l’espace
getElementById())
r e E
global, donc on peut directement faire (sans avoir besoin d’utiliser
f
A ch
console.log(window.container.innerHTML);;
©
JavaScript
Pour récupérer un élément selon son id, une solution possible consite à utiliser
la méthode getElementById()
H I ©
UEL
O
LM
Tous les éléments HTML ayant un identifiant seront chargés dans l’espace
getElementById())
r e E
global, donc on peut directement faire (sans avoir besoin d’utiliser
f
A ch
console.log(window.container.innerHTML);;
©
Ou en plus simple
console.log(container.innerHTML);;
JavaScript
H I ©
Remarque
UEL
O
LM
Pour éviter les conflits avec des éventuelles variables ou fonctions
f E
portant le même nom, il est conseillé d’utiliser getElementById().
r e
ch
©A
JavaScript
Quelques évènements
c h r
change, input et select e : pour les éléments d’un formulaire
reset et©
A
submit : pour la ré-initialisation et la soumission de formulaire
...
JavaScript
JavaScript
Première méthode (la page HTML)
<!DOCTYPE html>
<html lang="fr">
<head>
<link rel="stylesheet" href="style.css">
H I ©
EL
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale
=1.0">
O U
<title>Event Test</title>
</head>
f E LM
ch r e
©A
<body>
<div id=container>
<input type=text id=nom>
<button onclick="direBonjour()" id=cliquer> cliquer </button>
</div>
<script src="script.js"></script>
</body>
</html>
JavaScript
Contenu du script.js
H I ©
function direBonjour(){
U EL
O
LM
var nom = document.getElementById(’nom’).value;
alert ("Bonjour " + nom);
r e f E
}
ch
©A
JavaScript
Première méthode (la page HTML)
<!DOCTYPE html>
<html lang="fr">
<head>
<link rel="stylesheet" href="style.css">
H I ©
EL
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale
=1.0">
O U
<title>Event Test</title>
</head>
f E LM
ch r e
©A
<body>
<div id=container>
<input type=text id=nom>
<button id=cliquer> cliquer </button>
</div>
<script src="script.js"></script>
</body>
</html>
JavaScript
Contenu du script.js
var cliquer = document.getElementById(’cliquer’); H I ©
U EL
O
f E LM
cliquer.addEventListener(’click’, function() {
var nom = document.getElementById(’nom’).value;
alert ("Bonjour " + nom);
ch r e
});
©A
JavaScript
O U
f E LM
cliquer.addEventListener(’click’, function (event) {
console.log(event);
ch r e
var nom = document.getElementById(’nom’).value;
});
©A
alert("Bonjour " + nom);
JavaScript
H I ©
Pour supprimer un évènement associé à un élément HTML
U EL
O
f E LM
element.removeEventListener(event, nomFunction);
ch r e
©A
JavaScript
Considérons la page index.html suivante
<!DOCTYPE html>
<html lang="fr">
<head>
<link rel="stylesheet" href="style.css">
H I ©
EL
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale
=1.0">
O U
<title>Prevent event</title>
</head>
f E LM
ch r e
©A
<body>
<div>
Saisir seulement des caractères alphabétiques en minuscule :
<input type="text" id="nom">
</div>
<script src="script.js"></script>
</body>
</html>
JavaScript
f E
if (pressedKey < ’a’ L|| > ’z’) {
e
chr de tout écrire en minuscule");
event.preventDefault();
© A
alert("Merci
}
});
JavaScript
JavaScript
Considérons la page index.html suivante
<!DOCTYPE html>
<html lang="fr">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Stop propagation</title>
H I ©
EL
<style>
div {
padding: 50px;
O U
LM
cursor: pointer;
}
</style>
</head>
r e f E
ch
©A
<body>
<div style="background-color:gold" onclick="jaune()">
Parent
<div style="background-color:teal" onclick="vert()">
Fils
</div>
</div>
<script src="script.js"></script>
</body>
</html>
Parent
Fils
H I ©
U EL
O
f E LM
ch r e
©A
Parent
Fils
H I ©
U EL
O
f E LM
ch r e
©A
Code JavaScript de vert() et jaune()
function vert(){
alert("vert");
}
function jaune(){
alert("jaune");
}
JavaScript
Constats
En cliquant sur le jaune, jaune est affiché
H I ©
U ELés
En cliquant sur le vert, jaune et vert sont affich
L MO
r e f E
A ch
©
JavaScript
Constats
En cliquant sur le jaune, jaune est affiché
H I ©
U ELés
En cliquant sur le vert, jaune et vert sont affich
L MO
r e f E
A ch
Solution ©
Utiliser la méthode stopPropagation
JavaScript
Nouveau code de la fonction vert() (pas de changement pour jaune())
function vert(event){
alert("vert");
event.stopPropagation();
}
H I ©
EL
function jaune(){
alert("jaune");
O U
LM
}
r e f E
ch
©A
JavaScript
Nouveau code de la fonction vert() (pas de changement pour jaune())
function vert(event){
alert("vert");
event.stopPropagation();
}
H I ©
EL
function jaune(){
alert("jaune");
O U
LM
}
r e f E
Une modification danscleh
©A
HTML
<div style="background-color:gold" onclick="jaune()" >
Parent
<div style="background-color:teal" onclick="vert(event)">
Fils
</div>
</div>