Résumé 2 - INTRODUCTION AUX ÉVÉNEMENTS
Lien vers l'activité : Introduction aux événements
Dernière modif. : 31 01 2021
1 - Deux façons de surveiller l'événement "chargement"
1.1 - Dans la balise HTML
On insère la surveillance directement dans les balises HTML via un attribut onload qui permet d'activer une fonction javascript lors du chargement de l'élément :
HTML | <body onload="demarrage()" >
|
1.2 - Dans le code Javascript
On déclenche une surveillance depuis Javascript en insérant un code de ce type :
JS | window.addEventListener("load",demarrage);
|
ATTENTION : dans les deux cas, il faudra disposer ici d'une fonction demarrage.
2 - Surveiller les clics
Travaillons avec la versionoù on place l'attribut onclick dans la balise voulue.
Exemple 1 : on veut lancer fonction_qu_on_veut_activer en cliquant sur une image :
1
2 | <img onclick="fonction_qu_on_veut_activer()"
src="https://doc.infoforall.fr/commun/images/accueil_HTML5_150.png">
|
Exemple 2 : On veut afficher un Pop-up en cliquant sur un paragraphe.
1 | <p onclick="alert('CLIC sur le paragraphe détecté !')">Clique sur moi !</p>
|
3 - Obtenir la référence de la balise HTML avec le mot-clé this
3.1 Principe de this
Le mot-clé this contient automatiquement la référence de la balise qui a déclenché l'événement. D'où le nom this pour dire : c'est CA le déclencheur.
Exemple : on veut obtenir l'adresse-source de l'image sur laquelle on vient de cliquer :
1
2
3 | <img width="100px"
onclick="alert(this.src);"
src="https://doc.infoforall.fr/commun/images/accueil_HTML5_150.png">
|
3.2 Récupération d'un attribut à l'aide de this
Il suffit de donner la référence de la balise (this) suivi d'un point et du nom de l'attribut voulu.
- Récupération de la source :
this.src
- Récupération de la largeur :
this.width
- Récupération de la hauteur :
this.height
Pour les propriétés liées au CSS, on peut utiliser l'attribut style.
- Récupération de la couleur d'écriture :
this.style.color
- Récupération de la couleur du fond :
this.style.backgroundColor
...
3.3 Différence de notation CSS et JS
En CSS, la propriété du fond coloré est background-color
.
En JS, le tiret - n'est pas autorisé : on faut le remplacer par une majuscule : backgroundColor
.
C'est vrai avec tous les noms composés d'un tiret.
On notera également que le CSS class
devient le JS className
ou encore le CSS float
qui devient styleFloat
.
3.4 Modifier les attributs d'une balise
Il faut faire une simple affectation depuis le JS.
1
2
3
4
5
6
7
8
9 | this.width = 200px;
this.height = 200px;
this.style.display = 'block';
this.style.display = 'inline';
this.style.display = 'inline-block';
this.style.color = 'red';
this.style.backgroundColor = 'yellow';
this.src = 'image2.png';
this.className = 'maClasseCSSQueJeVeux';
|
ATTENTION : Les exemples ont été écrits avec this mais il faut juste une variable qui contiennent la référence de la balise voulue. Si reference contient cette référence, on peut écrire :
1 | reference.width = 200px;
|
4 - Autres événements
Attention, ces noms sont ceux qu'il faut indiquer lorsqu'on veut les surveiller depuis un déclenchement JS :
JS | reference_p.addEventListener("mouseover",action_a_faire);
|
Si vous voulez lancer la surveillance depuis une balise, il faut rajouter on
devant le nom de l'attribut.
HTML | <p onmouseover="action_a_faire()" >
|
click
: on clique et on relâche sur la balisedblclick
: pareil mais en clic double.mousedown
: on clique gauche sans relâcher sur la balise.mouseup
: on relâche gauche sur la balise.mouseover
: on survole la balise.mousemove
: on déplace la souris sur l'élément.-
mouseout
: on fait sortir la souris de la balise. -
keydown
: on appuie sans relâcher sur l'une des touches. keyup
: on relâche une touche.-
keypress
: on appuie et relâche une touche. -
focus
: on vient de mettre le focus ou cibler l'élément, par exemple en cliquant sur l'élément. blur
: on annule ce ciblage, par exemple en cliquant ailleurs.load
: la balise est correctement chargée.
5 - innerHTML
Le innerHTML
correspond à ce qui est situé entre la balise d'ouverture et la balise de fermeture d'une balise. Les balises orphelines n'ont donc pas de innerHTML.
Cela peut être du texte (exemple 1 ci-dessous), mais cela peut également être tout un ensemble d'autres balises (exemple2).
1 | <p>Voici un innerHTML composé d'un texte</p>
|
1
2
3
4 | <ol>
<li>Premier élément</li>
<li>Deuxième élément</li>
</ol>
|
Exemple de lecture d'un innerHTML :
1
2
3 | var texte = reference.innerHTML
var entier = parseInt(reference.innerHTML)
var flottant = parseFloat(reference.innerHTML)
|
Si vous désirez au contraire redéfinir ce contenu interne, il suffit d'utiliser ceci :
1 | reference.innerHTML = "Je suis le <em>nouveau</em> contenu"
|
6 - Exemple d'utilisation
Voir le site pour d'autres exemples.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38 | <!DOCTYPE html>
<html lang="fr">
<head>
<meta charset="UTF-8" />
<title>Gestion des autres événements</title>
<style>
.s {
display: inline-block;
text-align: center;
width: 20px;
height: 20px;
color: white;
background-color: #BB00BB;
margin: 5px;
}
</style>
</head>
<body>
<main>
<h1>Qui se cache derrière le nom mystère ?</h1>
<p>
<span onclick="affiche(this,'L');" class="s">*</span>
<span onclick="affiche(this,'o');" class="s">*</span>
<span onclick="affiche(this,'v');" class="s">*</span>
<span onclick="affiche(this,'e');" class="s">*</span>
<span onclick="affiche(this,'l');" class="s">*</span>
<span onclick="affiche(this,'a');" class="s">*</span>
<span onclick="affiche(this,'c');" class="s">*</span>
<span onclick="affiche(this,'e');" class="s">*</span>
.</p>
</main>
<script>
function affiche(reference, caractere) {
reference.innerHTML = caractere;
}
</script>
</body>
</html>
|