Cours Java Script Dom
Cours Java Script Dom
Achref El Mouelhi
[Link]@[Link]
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="[Link]">
</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="[Link] ma page </a>
</p>
<p class=blue name=parConteneur> salut </p>
</div>
<script src="[Link]"></script>
</body>
</html>
H & H: Research and Training 11 / 61
Récupérer un élément HTML
JavaScript
Contenu de [Link]
.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 = [Link]("container");
f
chr e
[Link]([Link]);
© A
JavaScript
H I ©
Ou sans passer par l’objet window U EL
M O
E L
var container = [Link]("container");
f
chr e
[Link]([Link]);
© 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 = [Link]("blue");
©A
}
H I ©
Ou aussi
U EL
O
LM
var bleus = [Link]("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 = [Link]("[Link]");
for (let bleu of pbleus) {
L MO
f E
[Link]([Link]);
r e
}
A ch
©
JavaScript
JavaScript
JavaScript
JavaScript
r e f E
[Link](lien);
ch
©A
// affiche [Link]
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
[Link] = "blue";
f
r e
[Link]([Link]);
ch
© A
JavaScript
H I ©
U EL
MO
Modifier une classe d’un élément HTML
E L
[Link] = "blue";
f
r e
[Link]([Link]);
ch
© A
Ajouter une nouvelle classe à un élément HTML
[Link] += " red";
[Link]([Link]);
JavaScript
Récupérer la liste des classes d’un élément HTML
var container = [Link]("container");
var list = [Link];
[Link](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 = [Link]("container");
var list = [Link];
[Link](list);
H I ©
Ajouter une classe à un élément HTML
U EL
var container = [Link]("container"); O
var list = [Link];
f E LM
[Link](’green’);
[Link](list);
ch r e
©A
JavaScript
Récupérer la liste des classes d’un élément HTML
var container = [Link]("container");
var list = [Link];
[Link](list);
H I ©
Ajouter une classe à un élément HTML
U EL
var container = [Link]("container"); O
var list = [Link];
f E LM
[Link](’green’);
[Link](list);
ch r e
© A
Ajouter des classes à un élément HTML
var container = [Link]("container");
var list = [Link];
[Link](’red’,"blue");
[Link](list);
JavaScript
JavaScript
©A
[Link](’red’, ’green’);
[Link](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 [Link]("container");
©
[Link] += "<p> hello </p>";
[Link]([Link]);
[Link]([Link]);
JavaScript
Modifier la couleur
var container = [Link]("container");
[Link] = "red";
H I ©
UEL
O
f E LM
ch r e
©A
JavaScript
Modifier la couleur
var container = [Link]("container");
[Link] = "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 = [Link]("container");
r
[Link] = "red";
© A
JavaScript
Modifier la couleur
var container = [Link]("container");
[Link] = "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 = [Link]("container");
r
[Link] = "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 [Link]
JavaScript
JavaScript
©A
var container = [Link]("container");
var parent = [Link];
[Link]([Link]);
JavaScript
JavaScript
©A
var container = [Link]("container");
var dernierFils = [Link];
[Link]([Link]);
JavaScript
JavaScript
©A
var container = [Link]("container");
var dernierFils = [Link];
[Link]([Link]);
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 = [Link]("p");
H I ©
UEL
O
f E LM
ch r e
©A
JavaScript
Créer un élément de type p
var par = [Link]("p");
f E
var text = [Link]("JS paragraph");
r e
ch
[Link](text);
©A
JavaScript
Créer un élément de type p
var par = [Link]("p");
f E
var text = [Link]("JS paragraph");
r e
ch
[Link](text);
©A
Ajouter l’élément au DOM
var container = [Link]("container");
[Link](par);
JavaScript
Créer un élément de type p
var par = [Link]("p");
f E
var text = [Link]("JS paragraph");
r e
ch
[Link](text);
©A
Ajouter l’élément au DOM
var container = [Link]("container");
[Link](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 [Link]
<script src="[Link]"></script>
</body>
ch r e
</html>
Le script [Link]
©A
var p = [Link](’first’);
[Link]("afterbegin","<p class=skyblue> afterbegin </p>");
[Link]("afterend","<p class=pink> afterend </p>");
[Link]("beforebegin","<p class=pink> beforebegin </p>");
[Link]("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
[Link]([Link]);;
©
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
[Link]([Link]);;
©
Ou en plus simple
[Link]([Link]);;
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="[Link]">
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="[Link]"></script>
</body>
</html>
JavaScript
Contenu du [Link]
H I ©
function direBonjour(){
U EL
O
LM
var nom = [Link](’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="[Link]">
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="[Link]"></script>
</body>
</html>
JavaScript
Contenu du [Link]
var cliquer = [Link](’cliquer’); H I ©
U EL
O
f E LM
[Link](’click’, function() {
var nom = [Link](’nom’).value;
alert ("Bonjour " + nom);
ch r e
});
©A
JavaScript
O U
f E LM
[Link](’click’, function (event) {
[Link](event);
ch r e
var nom = [Link](’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
[Link](event, nomFunction);
ch r e
©A
JavaScript
Considérons la page [Link] suivante
<!DOCTYPE html>
<html lang="fr">
<head>
<link rel="stylesheet" href="[Link]">
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="[Link]"></script>
</body>
</html>
JavaScript
f E
if (pressedKey < ’a’ L|| > ’z’) {
e
chr de tout écrire en minuscule");
[Link]();
© A
alert("Merci
}
});
JavaScript
JavaScript
Considérons la page [Link] 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" > Parent
<div style="background-color:teal" > Fils
</div>
</div>
<script src="[Link]"></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");
[Link]();
}
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");
[Link]();
}
H I ©
EL
function jaune(){
alert("jaune");
O U
LM
}
r e f E
Une modification danscleh
©A
HTML
<div style="background-color:gold" >
Parent
<div style="background-color:teal" > Fils
</div>
</div>