Cours Java Script 2 [PDF]

  • 0 0 0
  • Gefällt Ihnen dieses papier und der download? Sie können Ihre eigene PDF-Datei in wenigen Minuten kostenlos online veröffentlichen! Anmelden
Datei wird geladen, bitte warten...
Zitiervorschau

JavaScript et le DOM

Ahmed Badreddine Docteur Ingenieur en Génie Logiciel [email protected]

H & H: Research and Training

1 / 51

Plan 1

Introduction

2

´ ´ ´ ement ´ Recup erer un el HTML

3

´ ´ ´ ement ´ Recup erer/modifier l’attribut d’un el HTML

4

´ ´ ´ ement ´ Recup erer/modifier le contenu d’un el HTML

5

´ ement ´ Le parent et les enfants d’un el HTML

6

´ ement ´ Ajouter un nouvel el HTML

7

´ ´ ements ´ Autres operations sur les el HTML

8

´ es ´ CSS d’un el ´ ement ´ Modifier les propriet HTML

9

´ enements ` Les ev ´ enement ` ´ ement ´ Associer un ev a` un el ´ enement ` Supprimer un ev ´ enement ` Annuler un ev ˆ Arreter la propagation

H & H: Research and Training

2 / 51

Introduction

JavaScript ´ efinis, ´ JavaScript nous permet, via des objets pred d’avoir des informations sur le visiteur son navigateur la structure de la page (document) qu’il consulte ´ son ecran ...

H & H: Research and Training

3 / 51

Introduction

JavaScript ´ efinis, ´ JavaScript nous permet, via des objets pred d’avoir des informations sur le visiteur son navigateur la structure de la page (document) qu’il consulte ´ son ecran ...

window

document H & H: Research and Training

location

navigator

screen 3 / 51

Introduction

JavaScript

L’objet Window contient quatre autres objets importants : document, location, navigator, screen ´ des methodes basiques comme alert, confirm les objets comme String, Date, Math... ´ ´ toute variable, objet... definis par le developpeur ...

H & H: Research and Training

4 / 51

Introduction

JavaScript L’objet document contient contentType : text/html, text/xml... toutes les balises HTML constituant le document (DOM) les attributs et leurs valeurs ...

H & H: Research and Training

5 / 51

Introduction

JavaScript L’objet document contient contentType : text/html, text/xml... toutes les balises HTML constituant le document (DOM) les attributs et leurs valeurs ... L’objet location contient hostname : localhost... port : 3000 protocol : http ... H & H: Research and Training

5 / 51

Introduction

JavaScript L’objet navigator contient language : fr FR... connection : 4G cookieEnabled : true ...

H & H: Research and Training

6 / 51

Introduction

JavaScript L’objet navigator contient language : fr FR... connection : 4G cookieEnabled : true ... L’objet screen contient height width orientation ... H & H: Research and Training

6 / 51

Introduction

JavaScript DOM : Document Object Model Interface de programmation (API) pour les documents XML et HTML Graphiquement, c¸a correspond a` un arbre dont les nœuds sont les balises HTML Avant standardisation par le W3C, chaque navigateur avait son propre DOM. Utilise´ par les scripts pour modifier un document HTML en ajoutant un nœud modifiant un autre ` remplac¸ant un premier par un deuxieme supprimant un autre H & H: Research and Training

7 / 51

´ ´ ´ ement ´ Recup erer un el HTML

JavaScript

´ ´ ´ ´ ement ´ Plusieurs methodes pour recup erer un el HTML selon l’identifiant : .getElementById() selon le nom de la classe : .getElementsByClassName() selon le nom de la balise.getElementsByTagName() selon l’attribut name : .getElementsByName() ´ selon un selecteur CSS : .querySelectorAll() ou .querySelector()

H & H: Research and Training

8 / 51

´ ´ ´ ement ´ Recup erer un el HTML

JavaScript ´ Considerons la page HTML suivante



My JS Page



Consid´ erons les paragraphes suivants :

bonjour

bonsoir, voici ma page

salut





H & H: Research and Training

9 / 51

´ ´ ´ ement ´ Recup erer un el HTML

JavaScript Contenu de style.css .red { color: red; } .blue { color: blue; } .green { color: green; }

H & H: Research and Training

10 / 51

´ ´ ´ ement ´ Recup erer un el HTML

JavaScript ´ ´ ´ ement ´ Recup erer un el selon son id, on ajoute dans file.js var container = window.document.getElementById("container"); console.log(container.innerHTML);

H & H: Research and Training

11 / 51

´ ´ ´ ement ´ Recup erer un el HTML

JavaScript ´ ´ ´ ement ´ Recup erer un el selon son id, on ajoute dans file.js var container = window.document.getElementById("container"); console.log(container.innerHTML);

Ou sans passer par l’objet window var container = document.getElementById("container"); console.log(container.innerHTML);

H & H: Research and Training

11 / 51

´ ´ ´ ement ´ Recup erer un el HTML

JavaScript ´ ´ ´ ement ´ Recup erer un el selon son id, on ajoute dans file.js var container = window.document.getElementById("container"); console.log(container.innerHTML);

Ou sans passer par l’objet window var container = document.getElementById("container"); console.log(container.innerHTML);

´ ´ ´ ements ´ Recup erer des el selon le nom de la balise var paragraphes = document.getElementsByTagName("p"); for (let paragraphe of paragraphes) console.log(paragraphe.innerHTML);

H & H: Research and Training

11 / 51

´ ´ ´ ement ´ Recup erer un el HTML

JavaScript ´ ´ ´ ement ´ Recup erer un el selon son id, on ajoute dans file.js var container = window.document.getElementById("container"); console.log(container.innerHTML);

Ou sans passer par l’objet window var container = document.getElementById("container"); console.log(container.innerHTML);

´ ´ ´ ements ´ Recup erer des el selon le nom de la balise var paragraphes = document.getElementsByTagName("p"); for (let paragraphe of paragraphes) console.log(paragraphe.innerHTML);

Ou encore var paragraphes = container.getElementsByTagName("p"); for (let paragraphe of paragraphes) console.log(paragraphe.innerHTML); H & H: Research and Training

11 / 51

´ ´ ´ ement ´ Recup erer un el HTML

JavaScript

´ ´ ´ ement ´ Recup erer un el selon sa classe var bleus = document.getElementsByClassName("blue"); for (let bleu of bleus) console.log(bleu.innerHTML);

H & H: Research and Training

12 / 51

´ ´ ´ ement ´ Recup erer un el HTML

JavaScript

´ ´ ´ ement ´ Recup erer un el selon sa classe var bleus = document.getElementsByClassName("blue"); for (let bleu of bleus) console.log(bleu.innerHTML);

Ou aussi var bleus = container.getElementsByClassName("blue"); for (let bleu of bleus) console.log(bleu.innerHTML);

H & H: Research and Training

12 / 51

´ ´ ´ ement ´ Recup erer un el HTML

JavaScript

´ ´ ´ ement ´ Recup erer un el selon la valeur de son attribut name var parConteneurs = document.getElementsByName(" parConteneur"); console.log(parConteneurs);

H & H: Research and Training

13 / 51

´ ´ ´ ement ´ Recup erer un el HTML

JavaScript

´ ´ ´ ement ´ Recup erer un el selon la valeur de son attribut name var parConteneurs = document.getElementsByName(" parConteneur"); console.log(parConteneurs);

Ou aussi for (let parConteneur of parConteneurs) console.log(parConteneur.innerHTML);

H & H: Research and Training

13 / 51

´ ´ ´ ement ´ Recup erer un el HTML

JavaScript ´ ´ ´ ement ´ ´ Recup erer un el selon un selecteur CSS 3 var pbleus = document.querySelectorAll("p.blue"); for (let bleu of pbleus) console.log(bleu.innerHTML);

H & H: Research and Training

14 / 51

´ ´ ´ ement ´ Recup erer un el HTML

JavaScript ´ ´ ´ ement ´ ´ Recup erer un el selon un selecteur CSS 3 var pbleus = document.querySelectorAll("p.blue"); for (let bleu of pbleus) console.log(bleu.innerHTML);

´ ´ ´ ement ´ ´ Recup erer le premier el selon un selecteur CSS 3 var pbleu = document.querySelector("p.blue"); console.log(pbleu.innerHTML);

H & H: Research and Training

14 / 51

´ ´ ´ ement ´ Recup erer un el HTML

JavaScript ´ ´ ´ ement ´ ´ Recup erer un el selon un selecteur CSS 3 var pbleus = document.querySelectorAll("p.blue"); for (let bleu of pbleus) console.log(bleu.innerHTML);

´ ´ ´ ement ´ ´ Recup erer le premier el selon un selecteur CSS 3 var pbleu = document.querySelector("p.blue"); console.log(pbleu.innerHTML);

´ Ceci declenche une erreur var prouges = document.querySelector("p.red"); for (let rouge of prouges) console.log(rouge.innerHTML); H & H: Research and Training

14 / 51

´ ´ ´ ement ´ Recup erer/modifier l’attribut d’un el HTML

JavaScript ´ ´ ´ ement ´ Recup erer l’attribut d’un el HTML var lien = document.querySelector(’a’); var href = lien.getAttribute(’href’); console.log(href);

H & H: Research and Training

15 / 51

´ ´ ´ ement ´ Recup erer/modifier l’attribut d’un el HTML

JavaScript ´ ´ ´ ement ´ Recup erer l’attribut d’un el HTML var lien = document.querySelector(’a’); var href = lien.getAttribute(’href’); console.log(href);

´ ement ´ Modifier l’attribut d’un el HTML lien.setAttribute(’href’, ’https://www.w3schools.com’); console.log(lien);

H & H: Research and Training

15 / 51

´ ´ ´ ement ´ Recup erer/modifier l’attribut d’un el HTML

JavaScript ´ ´ ´ ement ´ Recup erer l’attribut d’un el HTML var lien = document.querySelector(’a’); var href = lien.getAttribute(’href’); console.log(href);

´ ement ´ Modifier l’attribut d’un el HTML lien.setAttribute(’href’, ’https://www.w3schools.com’); console.log(lien);

´ ement ´ Supprimer l’attribut d’un el HTML lien.removeAttribute(’href’);

H & H: Research and Training

15 / 51

´ ´ ´ ement ´ Recup erer/modifier l’attribut d’un el HTML

JavaScript ´ Pour certains attributs comme href, on peut acceder directement a` la valeur via son nom var lien = document.querySelector(’a’); var href = lien.href; console.log(href);

H & H: Research and Training

16 / 51

´ ´ ´ ement ´ Recup erer/modifier l’attribut d’un el HTML

JavaScript ´ Pour certains attributs comme href, on peut acceder directement a` la valeur via son nom var lien = document.querySelector(’a’); var href = lien.href; console.log(href);

´ ement ´ Modifier l’attribut d’un el HTML lien.href = ’https://www.w3schools.com’; console.log(lien);

H & H: Research and Training

16 / 51

´ ´ ´ ement ´ Recup erer/modifier l’attribut d’un el HTML

JavaScript

Remarques ´ reserv ´ ´ en JS, on Les attributs class et for sont des mots cles es ne peut donc les utiliser pour modifier leurs valeurs HTML.

H & H: Research and Training

17 / 51

´ ´ ´ ement ´ Recup erer/modifier l’attribut d’un el HTML

JavaScript

Remarques ´ reserv ´ ´ en JS, on Les attributs class et for sont des mots cles es ne peut donc les utiliser pour modifier leurs valeurs HTML.

Solution Utiliser className ou classList pour l’attribut class Et forHtml pour l’attribut for

H & H: Research and Training

17 / 51

´ ´ ´ ement ´ Recup erer/modifier l’attribut d’un el HTML

JavaScript ´ ´ ´ ement ´ Recup erer la classe d’un el HTML var container = document.getElementById("container"); console.log(container.className);

H & H: Research and Training

18 / 51

´ ´ ´ ement ´ Recup erer/modifier l’attribut d’un el HTML

JavaScript ´ ´ ´ ement ´ Recup erer la classe d’un el HTML var container = document.getElementById("container"); console.log(container.className);

´ ement ´ Modifier une classe d’un el HTML container.className = "blue"; console.log(container.className);

H & H: Research and Training

18 / 51

´ ´ ´ ement ´ Recup erer/modifier l’attribut d’un el HTML

JavaScript ´ ´ ´ ement ´ Recup erer la classe d’un el HTML var container = document.getElementById("container"); console.log(container.className);

´ ement ´ Modifier une classe d’un el HTML container.className = "blue"; console.log(container.className);

´ ement ´ Ajouter une nouvelle classe a` un el HTML container.className += " red"; console.log(container.className);

H & H: Research and Training

18 / 51

´ ´ ´ ement ´ Recup erer/modifier l’attribut d’un el HTML

JavaScript ´ ´ ´ ement ´ Recup erer la liste des classes d’un el HTML var container = document.getElementById("container"); var list = container.classList; console.log(list);

H & H: Research and Training

19 / 51

´ ´ ´ ement ´ Recup erer/modifier l’attribut d’un el HTML

JavaScript ´ ´ ´ ement ´ Recup erer la liste des classes d’un el HTML var container = document.getElementById("container"); var list = container.classList; console.log(list);

´ ement ´ Ajouter une classe a` un el HTML var container = document.getElementById("container"); var list = container.classList; list.add(’green’); console.log(list);

H & H: Research and Training

19 / 51

´ ´ ´ ement ´ Recup erer/modifier l’attribut d’un el HTML

JavaScript ´ ´ ´ ement ´ Recup erer la liste des classes d’un el HTML var container = document.getElementById("container"); var list = container.classList; console.log(list);

´ ement ´ Ajouter une classe a` un el HTML var container = document.getElementById("container"); var list = container.classList; list.add(’green’); console.log(list);

´ ement ´ Ajouter des classes a` un el HTML var container = document.getElementById("container"); var list = container.classList; list.add(’red’,"blue"); console.log(list); H & H: Research and Training

19 / 51

´ ´ ´ ement ´ Recup erer/modifier l’attribut d’un el HTML

JavaScript ´ ement ´ Supprimer une classe d’un el HTML list.remove(’red’); console.log(list);

H & H: Research and Training

20 / 51

´ ´ ´ ement ´ Recup erer/modifier l’attribut d’un el HTML

JavaScript ´ ement ´ Supprimer une classe d’un el HTML list.remove(’red’); console.log(list);

´ ement ´ Supprimer plusieurs classes d’un el HTML list.remove(’red’,’green’); console.log(list);

H & H: Research and Training

20 / 51

´ ´ ´ ement ´ Recup erer/modifier l’attribut d’un el HTML

JavaScript ´ ement ´ Supprimer une classe d’un el HTML list.remove(’red’); console.log(list);

´ ement ´ Supprimer plusieurs classes d’un el HTML list.remove(’red’,’green’); console.log(list);

Supprimer une classe si elle existe, sinon l’ajouter list.toggle(’red’); console.log(list); H & H: Research and Training

20 / 51

´ ´ ´ ement ´ Recup erer/modifier l’attribut d’un el HTML

JavaScript

´ Autres methodes de classList length : retourne le nombre de classes. contains(classe) : retourne true si classe appartient a` classList, false sinon. ´ item(i) : retourne la classe d’indice i si i est inferieur a` la longueur de la liste, null sinon.

H & H: Research and Training

21 / 51

´ ´ ´ ement ´ Recup erer/modifier l’attribut d’un el HTML

JavaScript

Les attributs d’un formulaire ´ ´ value : pour recup erer la valeur saisie dans une zone de saisie (input, textarea...) ´ checked : pour determiner si une case a` cocher ou un bouton ´ e´ coche´ ou non (true ou false) radio a et ...

H & H: Research and Training

22 / 51

´ ´ ´ ement ´ Recup erer/modifier le contenu d’un el HTML

JavaScript

´ ´ ´ ement ´ Recup erer le contenu d’un el HTML (y compris les balises) var container = document.getElementById("container"); console.log(container.innerHTML);

H & H: Research and Training

23 / 51

´ ´ ´ ement ´ Recup erer/modifier le contenu d’un el HTML

JavaScript

´ ´ ´ ement ´ Recup erer le contenu d’un el HTML (y compris les balises) var container = document.getElementById("container"); console.log(container.innerHTML);

´ ´ ´ ement ´ Recup erer le contenu d’un el HTML (sans les balises) var container = document.getElementById("container"); console.log(container.textContent);

H & H: Research and Training

23 / 51

´ ´ ´ ement ´ Recup erer/modifier le contenu d’un el HTML

JavaScript ´ ement ´ Modifier le contenu d’un el HTML avec innerHTML var container = document.getElementById("container"); container.innerHTML += "

hello

"; console.log(container.innerHTML);

H & H: Research and Training

24 / 51

´ ´ ´ ement ´ Recup erer/modifier le contenu d’un el HTML

JavaScript ´ ement ´ Modifier le contenu d’un el HTML avec innerHTML var container = document.getElementById("container"); container.innerHTML += "

hello

"; console.log(container.innerHTML);

´ ´ ´ ement ´ Recup erer le contenu d’un el HTML avec textContent var container = document.getElementById("container"); container.textContent += "

hello

"; console.log(container.textContent); console.log(container.innerHTML);

H & H: Research and Training

24 / 51

´ ement ´ Le parent et les enfants d’un el HTML

JavaScript

´ ´ ´ ement ´ Recup erer le parent d’un el HTML (l’objet) var container = document.getElementById("container"); var parent = container.parentNode; console.log(parent);

H & H: Research and Training

25 / 51

´ ement ´ Le parent et les enfants d’un el HTML

JavaScript

´ ´ ´ ement ´ Recup erer le parent d’un el HTML (l’objet) var container = document.getElementById("container"); var parent = container.parentNode; console.log(parent);

´ ´ ´ ement ´ Recup erer le parent d’un el HTML (le nom) var container = document.getElementById("container"); var parent = container.parentNode; console.log(parent.nodeName);

H & H: Research and Training

25 / 51

´ ement ´ Le parent et les enfants d’un el HTML

JavaScript

´ ´ ´ ement ´ ´ ement ´ Recup erer le premier el fils d’un el HTML var container = document.getElementById("container"); var premierFils = container.firstElementChild; console.log(premierFils.nodeName);

H & H: Research and Training

26 / 51

´ ement ´ Le parent et les enfants d’un el HTML

JavaScript

´ ´ ´ ement ´ ´ ement ´ Recup erer le premier el fils d’un el HTML var container = document.getElementById("container"); var premierFils = container.firstElementChild; console.log(premierFils.nodeName);

´ ´ ´ ement ´ ´ ement ´ Recup erer le dernier el fils d’un el HTML var container = document.getElementById("container"); var dernierFils = container.lastElementChild; console.log(dernierFils.nodeName);

H & H: Research and Training

26 / 51

´ ement ´ Le parent et les enfants d’un el HTML

JavaScript

´ ´ ´ ement, ´ ´ ement ´ Recup erer le premier fils (el texte ou autre) d’un el HTML var container = document.getElementById("container"); var premierFils = container.firstChild; console.log(premierFils.nodeName);

H & H: Research and Training

27 / 51

´ ement ´ Le parent et les enfants d’un el HTML

JavaScript

´ ´ ´ ement, ´ ´ ement ´ Recup erer le premier fils (el texte ou autre) d’un el HTML var container = document.getElementById("container"); var premierFils = container.firstChild; console.log(premierFils.nodeName);

´ ´ ´ ement, ´ ´ ement ´ Recup erer le dernier fils (el texte ou autre) d’un el HTML var container = document.getElementById("container"); var dernierFils = container.lastChild; console.log(dernierFils.nodeName);

H & H: Research and Training

27 / 51

´ ement ´ Le parent et les enfants d’un el HTML

JavaScript ´ ´ ´ ement, ´ ´ ement ´ Recup erer tous les enfants (el texte ou autre) d’un el HTML var enfants = container.childNodes; for(let enfant of enfants) console.log(enfant);

H & H: Research and Training

28 / 51

´ ement ´ Le parent et les enfants d’un el HTML

JavaScript ´ ´ ´ ement, ´ ´ ement ´ Recup erer tous les enfants (el texte ou autre) d’un el HTML var enfants = container.childNodes; for(let enfant of enfants) console.log(enfant);

´ ´ ´ ements ´ ´ ement ´ Recup erer tous les el enfants d’un el HTML var enfants = container.children; for(let enfant of enfants) console.log(enfant);

H & H: Research and Training

28 / 51

´ ement ´ Le parent et les enfants d’un el HTML

JavaScript ´ edent ´ Enfants suivant et prec previousSibling nextSibling previousElementSibling nextElementSibling

H & H: Research and Training

29 / 51

´ ement ´ Le parent et les enfants d’un el HTML

JavaScript ´ edent ´ Enfants suivant et prec previousSibling nextSibling previousElementSibling nextElementSibling

Attention ´ ´ edentes, ´ A` chaque appel d’une de methodes prec le pointeur passe a` ´ ement ´ ´ edent). ´ l’el suivant (ou prec

H & H: Research and Training

29 / 51

´ ement ´ Ajouter un nouvel el HTML

JavaScript

´ Etapes ´ l’el ´ ement ´ Creer ´ Preparer ses attributs [et valeurs] L’ajouter au document

H & H: Research and Training

30 / 51

´ ement ´ Ajouter un nouvel el HTML

JavaScript ´ un el ´ ement ´ Creer de type p var par = document.createElement("p");

H & H: Research and Training

31 / 51

´ ement ´ Ajouter un nouvel el HTML

JavaScript ´ un el ´ ement ´ Creer de type p var par = document.createElement("p");

´ Preparer ses attributs [et valeurs] par.id = "intro"; par.setAttribute("class", "blue"); var text = document.createTextNode("JS paragraph"); par.appendChild(text);

H & H: Research and Training

31 / 51

´ ement ´ Ajouter un nouvel el HTML

JavaScript ´ un el ´ ement ´ Creer de type p var par = document.createElement("p");

´ Preparer ses attributs [et valeurs] par.id = "intro"; par.setAttribute("class", "blue"); var text = document.createTextNode("JS paragraph"); par.appendChild(text);

´ ement ´ Ajouter l’el au DOM var container = document.getElementById("container"); container.appendChild(par);

H & H: Research and Training

31 / 51

´ ement ´ Ajouter un nouvel el HTML

JavaScript ´ un el ´ ement ´ Creer de type p var par = document.createElement("p");

´ Preparer ses attributs [et valeurs] par.id = "intro"; par.setAttribute("class", "blue"); var text = document.createTextNode("JS paragraph"); par.appendChild(text);

´ ement ´ Ajouter l’el au DOM var container = document.getElementById("container"); container.appendChild(par); ´ ement ´ appendChild() ajoute l’el comme dernier fils de conteneur H & H: Research and Training

31 / 51

´ ement ´ Ajouter un nouvel el HTML

JavaScript

On peut aussi utiliser ´ .insertBefore(newnode, existingnode) : pour inserer newnode avant existingnode

H & H: Research and Training

32 / 51

´ ement ´ Ajouter un nouvel el HTML

JavaScript

´ La methode insertAdjacentHTML(position, text) ´ ´ ee ´ permet d’inserer un texte HTML (text), dans une position specifi (position) afterbegin, afterend, beforebegin, beforeend.

H & H: Research and Training

33 / 51

´ ement ´ Ajouter un nouvel el HTML

JavaScript Exemple : HTML

Le fichier style.css



float et clear

bonjour





.skyblue { background-color: skyblue; } .pink { background-color: pink; } .green { background-color: green; }

Le script script.js var p = document.getElementById(’first’); p.insertAdjacentHTML("afterbegin","

afterbegin

"); p.insertAdjacentHTML("afterend","

afterend

"); p.insertAdjacentHTML("beforebegin","

beforebegin

"); p.insertAdjacentHTML("beforeend","

beforeend

"); H & H: Research and Training

34 / 51

´ ement ´ Ajouter un nouvel el HTML

JavaScript ´ Le resultat

beforebegin

afterbegin

bonjour

beforeend

afterend

H & H: Research and Training

35 / 51

´ ´ ements ´ Autres operations sur les el HTML

JavaScript

´ Quelques operations replaceChild : pour remplacer un nœud cloneNode() : pour cloner un nœud removeChild() : pour supprimer un nœud fils ´ hasChildNodes() : pour verifier l’existence d’au moins un nœud enfant

H & H: Research and Training

36 / 51

´ es ´ CSS d’un el ´ ement ´ Modifier les propriet HTML

JavaScript Modifier la couleur var container = document.getElementById("container"); container.style.color = "red";

H & H: Research and Training

37 / 51

´ es ´ CSS d’un el ´ ement ´ Modifier les propriet HTML

JavaScript Modifier la couleur var container = document.getElementById("container"); container.style.color = "red";

´ es ´ CSS composees ´ ´ ´ par -, il faut Pour les propriet de deux mots separ es ´ e´ en camelCase supprimer - mettre la propriet var container = document.getElementById("container"); container.style.backgroundColor = "red";

H & H: Research and Training

37 / 51

´ es ´ CSS d’un el ´ ement ´ Modifier les propriet HTML

JavaScript Modifier la couleur var container = document.getElementById("container"); container.style.color = "red";

´ es ´ CSS composees ´ ´ ´ par -, il faut Pour les propriet de deux mots separ es ´ e´ en camelCase supprimer - mettre la propriet var container = document.getElementById("container"); container.style.backgroundColor = "red";

Remarque ´ ement ´ Un el HTML qui a une classe red qui modifie la couleur de fond en ´ ´ au rouge n’a pas forcement la valeur red attribuee style.backgroundColor H & H: Research and Training

37 / 51

´ enements ` Les ev

JavaScript ´ enements ` Quelques ev click et dblclick : clic et double clic mouseover, mouseout, mousedown, mouseup et mousemove : mouvement de la souris keyup, keydown et keypress : touches de clavier focus et blur : ciblage et annulation de ciblage ´ ements ´ change, input et select : pour les el d’un formulaire ´ reset et submit : pour la re-initialisation et la soumission de formulaire ˆ load : chargement de la fenetre ´ enement ` scroll : ev lie´ au mouvement du scroll ... H & H: Research and Training

38 / 51

´ enements ` Les ev

´ enement ` ´ ement ´ Associer un ev a` un el

JavaScript

´ ´ ´ enement ` Deux fac¸ons differentes pour installer un ecouteur d’ev ´ edant ´ comme attribut d’une balise HTML en prec le nom ´ enement ` ´ d’ev par le prefixe on ayant comme valeur le nom d’une fonction JavaScript ´ dans le fichier JavaScript avec la methode addEventListener()

H & H: Research and Training

39 / 51

´ enements ` Les ev

´ enement ` ´ ement ´ Associer un ev a` un el

JavaScript ` methode ´ Premiere (la page HTML)

Event Test



cliquer



H & H: Research and Training

40 / 51

´ enements ` Les ev

´ enement ` ´ ement ´ Associer un ev a` un el

JavaScript

Contenu du fichier.js function direBonjour(){ var nom = document.getElementById(’nom’).value; alert ("Bonjour " + nom); }

H & H: Research and Training

41 / 51

´ enements ` Les ev

´ enement ` ´ ement ´ Associer un ev a` un el

JavaScript ` ´ Deuxieme methode (la page HTML)

Event Test



cliquer



H & H: Research and Training

42 / 51

´ enements ` Les ev

´ enement ` ´ ement ´ Associer un ev a` un el

JavaScript

Contenu du fichier.js var cliquer = document.getElementById(’cliquer’); cliquer.addEventListener(’click’, function() { var nom = document.getElementById(’nom’).value; alert ("Bonjour " + nom); });

H & H: Research and Training

43 / 51

´ enements ` Les ev

´ enement ` Supprimer un ev

JavaScript

´ enement ` ´ ement ´ Pour supprimer un ev associe´ a` un el HTML element.removeEventListener(event, nomFunction);

H & H: Research and Training

44 / 51

´ enements ` Les ev

´ enement ` Annuler un ev

JavaScript ´ Considerons la page index.html suivante

Prevent Event

Saisir seulement des caract` eres alphab´ etiques en minuscule :



H & H: Research and Training

45 / 51

´ enements ` Les ev

´ enement ` Annuler un ev

JavaScript Pour annuler une saisie qui n’est pas en minuscule var nom = document.getElementById(’nom’); nom.addEventListener(’keypress’,function(event){ var charCode = event.charCode; if (charCode < 97 || charCode > 122) { event.preventDefault(); alert("Merci de tout ´ ecrire en minuscule"); } });

H & H: Research and Training

46 / 51

´ enements ` Les ev

´ enement ` Annuler un ev

JavaScript

´ enements ` On ne peut annuler que certains ev saisir un texte cliquer sur une case a` cocher soumettre un formulaire cliquer sur un lien ´ ement ´ glisser un el (drag and drop)

H & H: Research and Training

47 / 51

´ enements ` Les ev

ˆ Arreter la propagation

JavaScript ´ Considerons la page index.html suivante

Stop propagation



Parent

Fils



H & H: Research and Training

48 / 51

´ enements ` Les ev

ˆ Arreter la propagation

Les deux div parent et fils

Parent

Fils

H & H: Research and Training

49 / 51

´ enements ` Les ev

ˆ Arreter la propagation

Les deux div parent et fils

Parent

Fils

Code JavaScript de vert() et jaune() function vert(){ alert("vert"); } function jaune(){ alert("jaune"); } H & H: Research and Training

49 / 51

´ enements ` Les ev

ˆ Arreter la propagation

JavaScript

Constats En cliquant sur le jaune, jaune est affiche´ ´ En cliquant sur le vert, jaune et vert sont affiches

H & H: Research and Training

50 / 51

´ enements ` Les ev

ˆ Arreter la propagation

JavaScript

Constats En cliquant sur le jaune, jaune est affiche´ ´ En cliquant sur le vert, jaune et vert sont affiches

Solution ´ Utiliser la methode stopPropagation

H & H: Research and Training

50 / 51

´ enements ` Les ev

ˆ Arreter la propagation

JavaScript Nouveau code de la fonction vert() (pas de changement pour jaune()) function vert(event){ alert("vert"); event.stopPropagation(); } function jaune(){ alert("jaune"); }

H & H: Research and Training

51 / 51

´ enements ` Les ev

ˆ Arreter la propagation

JavaScript Nouveau code de la fonction vert() (pas de changement pour jaune()) function vert(event){ alert("vert"); event.stopPropagation(); } function jaune(){ alert("jaune"); }

Une modification dans le HTML

Parent

Fils

H & H: Research and Training

51 / 51