JavaScript Janvier 2022
JavaScript Janvier 2022
1
Plan
Introduction
Comment intégrer du code JavaScript dans une page ?
Les variables, déclaration, types
Les opérateurs
Les entrées/sorties de données
Les instructions conditionnelles
Les instructions itératives
Les Fonctions
Les chaines de caractères
Portée des variables
Fonctions prédéfinies
La gestion des évènements
2
Plan
l’orienté objet en JavaScript
Valeurs primitives
objets prédéfinis
◦ L’objet global JavaScript String
◦ L’objet global JavaScript Number
◦ L’objet global JavaScript Number
◦ L’objet global JavaScript Math
◦ Les tableaux en JavaScript et l’objet global Array
◦ Les dates en JavaScript et l’objet global Date
Document Object Model (DOM)
◦ Qu’est-ce que le DOM ?
◦ L'interface de programmation DOM
◦ Accès aux données d’un Formulaire
◦ Notions avancées du DOM
3
Introduction
Javascript a été initialement développé par Netscape et s'appelait alors
LiveScript. Adopté à la fin de l'année 1995, par la firme Sun (qui a aussi
développé Java), il prit alors son nom de Javascript malgré qu’il est tout à
fait différent de Java.
Javascript est un langage de scripts qui incorporé aux balises Html, permet
d’ajouter de l'interactivité aux pages Web
◦ Contrôle des valeurs saisies dans un formulaire,
◦ Exécution d’un programme lors de la survenue d’événement
Ces scripts vont être gérés et exécutés par le browser lui-même sans
devoir faire appel aux ressources du serveur
Il présente cependant un inconvénient d’avoir un code source visible par
l’utilisateur ce qui induit une confidentialité nulle.
4
Comment intégrer du code JavaScript
dans une page ?
Il y a deux manières d'ajouter du code JavaScript dans une page :
1. En liant depuis la page HTML un fichier externe, dans lequel sont placées
les instructions JavaScript dans la balise <head>. Cependant il est
actuellement recommandé de la placer en fin de document juste
avant </body> pour ne pas bloquer le chargement de la page.
<script src="monscript.js"></script>
<script >
// Mon code Javascript ...
</script>
5
Comment intégrer du code JavaScript
dans une page ?
<script src="monscript.js" async ></script>
6
Le Javascript minimum "Hello World!"
afficher du texte directement dans le document HTML:
7
Les variables
déclaration
8
Les variables
Types de données JavaScript
Exemple
var length = 16; // Number
var prenom = "Foulen"; // String
var x = {prenom:"foulen", nom:"Ben Foulen"}; // Object
9
Les variables
Types de données JavaScript
Les variables JavaScript ont des types dynamiques . La même variable peut changer de type
aucours du programme
Exemple
var x; // ici x is undefined
x = 5; // maintenant x est de type Number
x = "Foulen"; //maintenant x is de type String
x = ‘Foulen’; //on peut aussi utiliser les simples cotes pour le type string
JavaScript Strings : les chaînes sont écrites avec des guillemets.Vous pouvez utiliser des
guillemets simples ou doubles. On peut utiliser des guillemets à l'intérieur d'une chaîne, tant
qu'ils ne correspondent pas aux guillemets ouvrant la chaîne
var carName1 = "Peuget 508"; // double quottes
var carName2 = 'Peuget 508'; // simples quottes
var answer1 = "It's alright"; // Simple quotte à l'intérieur de double quottes
var answer2 = "son nom est 'Johnny'"; // simple quottes à l'intérieur de double quottes
var answer3 = 'son nom est "Johnny"'; // double quottes à l'intérieur de simple quottes
10
Les variables
Types de données JavaScript
JavaScript Numbers: JavaScript n'a qu'un seul type de nombres. Les nombres peuvent être
écrits avec ou sans décimales:
var x1 = 34.00; // écrit avec decimales
var x2 = 34; // écrit sans decimales
var y = 123e5; // 12300000
var z = 123e-5; // 0.00123
11
Les variables
Types de données JavaScript
L’opérateur JavaScript typeof est utilisé pour retourner le type d'une variable JavaScript.
12
Les opérateurs
13
Les opérateurs
symbole Description
x++ incrémentation
(x++ est le même que x=x+1)
x-- décrémentation
(x-- est le même que x=x-1)
14
Les opérateurs de comparaison
L'égalité stricte avec === L'égalité stricte compare deux valeurs et teste leur
égalité.
Aucune des valeurs n'est convertie implicitement en une autre valeur avant que la
comparaison soit effectuée.
Si les valeurs sont typées différemment, elles sont considérées comme différentes.
Si les valeurs sont de même type et ne sont pas des nombres, elles sont considérées
égales si elles ont la même valeur.
Si les deux valeurs sont des nombres, elles sont égales si elles ont la même valeur et
que cette valeur n'est pas NaN
L'égalité faible avec == Le test d'égalité faible compare deux valeurs après les
avoir converties en valeurs d'un même type. Une fois converties (la conversion peut
s'effectuer pour l'une ou les deux valeurs), la comparaison finale est la même que
celle effectuée par ===
Pour plus de détails :
https://developer.mozilla.org/fr/docs/Web/JavaScript/Les_diff%C3%A9rents_tests_d_%C
3%A9galit%C3%A9#stricte
15
Les opérateurs
Priorité des opérateurs Les opérateurs s'effectuent dans l'ordre suivant de
priorité (du degré de priorité le plus faible ou degré de priorité le plus élevé). Dans le
cas d'opérateurs de priorité égale, de gauche à droite.
opérateur Description
, virgule ou séparateur de liste
?: Opérateur conditionnel
|| Ou logique
&& Et logique
== != Égalité et différent
+- Addition soustraction
*/ Multiplication division
() parenthèses
16
Les entrées/sorties de données
Les sorties des données
JavaScript peut "afficher" les données de différentes manières:
◦ Ecriture dans un élément HTML, en utilisant innerHTML.
◦ Écriture dans la sortie HTML en utilisant document.write().
◦ Ecrire dans une boîte d'alerte, en utilisant window.alert().
◦ Ecriture dans la console du navigateur, en utilisant console.log().
17
Les entrées/sorties de données
Les sorties des données
<!DOCTYPE html>
<html>
<body>
<h1>Test de document write</h1>
<p>Ecriture à l'emplacement du script dans la page Html</p>
<script>
document.write(5 + 6);
</script>
</body>
</html>
19
Les entrées/sorties de données
Les sorties des données
<!DOCTYPE html>
<html>
<body>
<h2>Activate Debugging</h2>
</body>
</html>
20
Les entrées/sorties de données
Les Entrée des données
<html>
<head>
<h1> Entrée de données avec prompt() </h1>
<script>
var nom=prompt ("Quel est votre nom?")
document.write("Bonjour "+"<b>"+nom+"</b>"+".")
</script>
</head>
</html>
21
Les entrées/sorties de données
Les Entrée des données
<html>
<head>
<script language="javascript">
var reponse= confirm ("confirmez vous la réponse?")
document.write ("<br> Merci pour votre réponse !")
</script>
</head>
</html>
22
Les entrées/sorties de données
Les Entrée/sorties dans un formulaire
• Exemple
• on crée deux zones texte pour la saisie des deux nombres
• et une zone de saisie pour le résultat
• un bouton pour appeler la fonction qui affiche la somme dans la zone résultat en
accédant au contenu à l’aide de la valeur de l’attribut name
<!DOCTYPE html>
<html>
<head>
<script>
function myFunction() {
var A = document.frm1.Aname.value ;
var B = document.frm1.Bname.value ;
document.frm1.somme.value = Number(A)+Number(B);
}
</script>
</head>
<body>
<form name="frm1" action="traitement.php">
valeur de A: <input type="number" name="Aname" value="0"><br>
valeur de B: <input type="number" name="Bname" value="0"><br><br>
A+B = <input type="number" name="somme" value="0" readonly ><br><br>
<input TYPE="button" NAME="bouton" value="Calculer la somme" onClick="myFunction()" >
</form>
</body>
</html> 23
Les instructions conditionnelles
En JavaScript, nous avons les instructions conditionnelles suivantes:
if pour spécifier un bloc de code à exécuter, si une condition spécifiée est
vraie
if (condition) {
// block of code to be executed if the condition is true
}
else pour spécifier un bloc de code à exécuter, si la même condition est
fausse
if (condition) {
// block of code to be executed if the condition is true
} else {
// block of code to be executed if the condition is false
}
else if pour spécifier une nouvelle condition à tester, si la première
condition est fausse
if (condition1) {
// block of code to be executed if condition1 is true
} else if (condition2) { // block of code to be executed if the condition1 is false and condition2 is true}
else { // block of code to be executed if the condition1 is false and condition2 is false }
switch pour spécifier de nombreux blocs de code alternatifs à exécuter
24
Les instructions conditionnelles
Exemple
<!DOCTYPE html>
<html>
<body>
<p id="demo"></p>
<script>
function myFunction() {
var greeting;
var time = new Date().getHours();
if (time < 10) {
greeting = "Good morning";
} else if (time < 20) {
greeting = "Good day";
} else {
greeting = "Good evening";
}
document.getElementById("demo").innerHTML = greeting;
}
</script>
</body>
</html>
25
Les instructions conditionnelles
switch pour spécifier de nombreux blocs de code alternatifs à exécuter
<!DOCTYPE html>
<html>
Syntaxe <body>
<p id="demo"></p>
switch(expression) { <script>
case x: var day;
switch (new Date().getDay()) {
// code block case 0:
break; day = "Sunday";
break;
case y: case 1:
// code block day = "Monday";
break;
break; case 2:
default: day = "Tuesday";
break;
// code block case 3:
} day = "Wednesday";
break;
case 4:
day = "Thursday";
break;
case 5:
day = "Friday";
break;
case 6:
day = "Saturday";
}
document.getElementById("demo").innerHTML = "Today is " + day;
</script> </body> </html> 26
Les instructions itératives
JavaScript prend en charge différents types de boucles:
for - parcourt un bloc de code plusieurs fois
while - boucle à travers un bloc de code tant qu'une condition spécifiée est
vraie. Elle commence par tester d’abord la condition
do/while - boucle également à travers un bloc de code tant qu'une
condition spécifiée est vraie. Elle teste la condition après la première
exécution
27
Les instructions itératives
La boucle For
Syntaxe
for (statement 1; statement 2; statement 3) {
// code block to be executed
}
Statement 1 est exécuté avant l’éxécution du code block.
Statement 2 définit la condition pour exécuter le code block.
Statement 3 est exécuté à chaque fois que le code block a été exécuté.
Exemple
<!DOCTYPE html>
<html>
<body>
Syntaxe
while (condition) {
// code block to be executed
}
Exemple
<!DOCTYPE html>
<html>
<body>
<h2>JavaScript While Loop</h2>
<p id="demo"></p>
<script>
var text = "";
var i = 0;
while (i < 10) {
text += "<br>The number is " + i;
i++;
}
document.getElementById("demo").innerHTML = text;
</script>
</body>
</html>
29
Les instructions itératives
La boucle do while La boucle do while est une variante de la boucle
while. Cette boucle exécutera le bloc de code une fois, avant de vérifier si la
condition est vraie, puis elle répétera la boucle tant que la condition est vraie.
Syntaxe
do {
// code block to be executed
}while (condition);
Exemple
<!DOCTYPE html>
<html>
<body>
<h2>JavaScript Do/While Loop</h2>
<p id="demo"></p>
<script>
var text = ""
var i = 0;
do {
text += "<br>The number is " + i;
i++;
}while (i < 10);
document.getElementById("demo").innerHTML = text;
</script>
</body>
</html>
30
Les Fonctions javaScript
Une fonction JavaScript est un bloc de code conçu pour effectuer une tâche
particulière. Une fonction JavaScript est exécutée lorsqu’elle est appelée dans
le programme.
Syntaxe Les variables déclarées avec var
dans une fonction resteront
function name(parameter1, parameter2, parameter3) { locaux à cette fonction.
// code to be executed
} Les paramètres sont passés par
valeur.
Exemple 1
On pourra utiliser la commande
<!DOCTYPE html>
<html> return (optionnel) Exemple:
<body> return a*b
<h2>JavaScript Functions</h2>
<p>dans cet exemple on appelle une fonction qui calcule le produit
de deux nombres et retourne le résultat :</p>
<p id="demo"></p>
<script>
var x = myFunction(4, 3);
document.getElementById("demo").innerHTML = x;
function myFunction(a, b) {
return a * b;
}
</script>
</body>
</html>
31
Les Fonctions javaScript
Une fonction JavaScript est un bloc de code conçu pour effectuer une tâche
particulière. Une fonction JavaScript est exécutée lorsqu’elle est appelée dans
le programme.
Syntaxe
function name(parameter1, parameter2, parameter3) {
// code to be executed
}
<!DOCTYPE html>
<html>
<body>
<h2>JavaScript Functions</h2>
<p id="demo"></p>
<script>
document.getElementById("demo").innerHTML = "The temperature is " + toCelsius(77) + " Celsius";
function toCelsius(fahrenheit) {
return (5/9) * (fahrenheit-32);
}
</script>
</body>
</html> 32
Les variables
Portée des variables, variables locales, variables globales
33
Les Fonctions javaScript
On pourra mettre dans un fichier à part: fonctions.js toutes les fonctions
déclarées. Pour les charger et les utiliser dans différentes pages Web on
utilise l’instruction suivante dans la balise <head>
<head>
<script src=“/rep/fonctions.js” >
</head>
Exemple 2
Exemple 1
<body> <body>
<h2>JavaScript Functions</h2> <h2>JavaScript Functions</h2>
<p>Fonction eval</p> <p>Fonction eval</p>
<p id="demo"></p> <p id="demo"></p>
<script> <script>
str ='3+5'; str ='myFunction(3,5) + myFunction(10,9)';
x=eval(str); x=eval(str);
document.getElementById("demo").innerHTML ='le résultat est ' + x; document.getElementById("demo").innerHTML ='le résultat est ' + x;
</script>
</body> function myFunction(a, b) {
</html> return a * b;
}
</script>
</body>
35
Travail à faire
36
Fonctions prédéfinies
La fonction parseFloat Cette fonction convertit une chaîne en nombre à
virgule flottante si la chaîne commence par un caractère numérique.
Si le premier caractère ne peut pas être converti en nombre, parseFloat () renvoie
NaN. Sinon elle analyse la chaîne jusqu'à ce qu'elle atteigne la fin du nombre et
renvoie le nombre sous le type nombre.
<!DOCTYPE html> document.getElementById("demo").innerHTML =
<html> a + "<br>" +
<body> b + "<br>" +
c + "<br>" +
<p>Click the button to parse different strings.</p> d + "<br>" +
e + "<br>" +
<button onclick="myFunction()">Try it</button> f + "<br>" +
g;
<p id="demo"></p> }
</script>
<script>
function myFunction() { </body>
var a = parseFloat("10") </html>
var b = parseFloat("10.00")
var c = parseFloat("10.33")
var d = parseFloat("34 45 66")
var e = parseFloat(" 60 ")
var f = parseFloat("40 years")
var g = parseFloat("He was 40")
37
Les évènements
Les évènements sont des actions qui se produisent et auxquelles
on va pouvoir répondre en exécutant un code. Par exemple, on va
pouvoir afficher ou cacher du texte suite à un clic d’un utilisateur
sur un élément, on change la taille d’un texte lors du passage de la
souris d’un utilisateur sur un élément.
Les évènements et leur prise en charge sont l’un des mécanismes
principaux de JavaScript qui vont nous permettre d’ajouter un vrai
dynamisme à nos pages Web.
38
Les évènements
En JavaScript, un évènement est une action qui se produit et qui
possède deux caractéristiques essentielles :
C’est une action qu’on peut « écouter », c’est-à-dire une action
qu’on peut détecter car le système va nous informer qu’elle se
produit ;
C’est une action à laquelle on peut « répondre », c’est-à-dire qu’on
va pouvoir attacher un code à cette action qui va s’exécuter dès
qu’elle va se produire.
Par exemple, on va pouvoir détecter le clic d’un utilisateur sur un
bouton d’un document et afficher une boite de dialogue ou un
texte suite à ce clic. On parlera donc « d’évènement clic ».
Il existe de nombreux évènements répertoriés en JavaScript (Le
chargement du document, Un clic sur un bouton, Le survol d’un élément
par la souris..)
39
Gestionnaires d’évènements
Pour écouter et répondre à un évènement, nous allons définir ce qu’on
appelle des gestionnaires d’évènements.
Un gestionnaire d’évènements est toujours divisé en deux parties :
une partie qui va servir à écouter le déclenchement de l’évènement,
et une partie gestionnaire en soi qui va être le code à exécuter dès que
l’évènement se produit.
40
Gestionnaires d’évènements
Utiliser les attributs HTML pour gérer un évènement
Cette façon de faire ne devrait plus être utilisée aujourd’hui. Cependant, de nombreux sites
utilisent encore ce type de syntaxe ce qui nous force à l’étudier ici.
Cette méthode consiste à insérer un attribut HTML lié à l’évènement
qu’on souhaite gérer directement dans la balise ouvrante d’un élément à
partir duquel on va pouvoir détecter le déclenchement de cet évènement.
Ces attributs HTML de « type évènement » possèdent souvent le nom de
l’évènement qu’ils doivent écouter et gérer précédé par « on » comme par
exemple :
◦ L’attribut onclick pour l’évènement « clic sur un élément » ;
◦ L’attribut onmouseover pour l’évènement « passage de la souris sur
un élément » ;
◦ L’attribut onmouseout pour l’évènement « sortie de la souris
d’élément » ;
◦ Etc..
Nous allons passer en valeur de ces attributs le code JavaScript qu’on
souhaite exécuter (généralement une fonction) suite au déclenchement de
l’évènement en question. Dès que l’évènement va être détecté, le code
présent dans l’attribut va être exécuté
41
Gestionnaires d’évènements
Utiliser les attributs HTML pour gérer un évènement
Exemple
<!DOCTYPE html>
<html>
<head>
<title>Première méthode de gestion des évènements</title>
<meta charset="utf-8">
</head>
<body>
<h1>Titre principal</h1>
<p>Un premier paragraphe</p>
<button onclick="alert('Bouton cliqué')">Cliquez moi !</button>
<div onmouseover="this.style.backgroundColor='orange'"
onmouseout="this.style.backgroundColor='white'">
<p>Un paragraphe dans un div</p>
<p>Un autre paragraphe dans le div</p>
</div>
</body>
</html>
42
Gestionnaires d’évènements
Utiliser les attributs HTML pour gérer un évènement
Liste des principaux évènements
Évènements applicables sur la balise <body>
évènement description
EXEMPLE 1
<!DOCTYPE html>
<html>
<body>
<p>Press and hold down a key inside the text field to set a red background color. Release the key to set a green background color.</p>
<input type="text" id="demo" onkeydown="keydownFunction()" onkeyup="keyupFunction()">
<script>
function keydownFunction() { document.getElementById("demo").style.backgroundColor = "red"; }
function keyupFunction() { document.getElementById("demo").style.backgroundColor = "green"; }
</script>
</body>
</html>
44
Gestionnaires d’évènements
Utiliser les attributs HTML pour gérer un évènement
Liste des principaux évènements
Évènements du clavier event.keyCode
EXEMPLE 2
<!DOCTYPE html>
<html>
<body>
<p>Press a key on the keyboard in the input field to get the Unicode character code of the pressed key.</p>
<p id="demo"></p>
<script>
/* In this example, we use a cross-browser solution, because the keyCode property does not work on the onkeypress event in Firefox.
However, the which property does. Explanation of the first line in the function below: if the browser supports
event.which, then use event.which, otherwise use event.keyCode */
function myFunction() {
var x = event.which || event.keyCode;
document.getElementById("demo").innerHTML = "The Unicode value is: " + x;
}
</script>
</body>
</html>
45
Gestionnaires d’évènements
Utiliser les attributs HTML pour gérer un évènement
Liste des principaux évènements Évènements de la souris
évènement description
47
Gestionnaires d’évènements
Utiliser les attributs HTML pour gérer un évènement
Liste des principaux évènements Évènements de la souris
EXEMPLE 2
<!DOCTYPE html>
<html>
<head>
<title>Première méthode de gestion des évènements</title>
<meta charset="utf-8">
</head>
<body>
<h1>Titre principal</h1>
<p>Un premier paragraphe</p>
<button onclick="alert('Bouton cliqué')" >Cliquez moi !</button>
<div onmouseover="this.style.backgroundColor='orange'"
onmouseout="this.style.backgroundColor='white'">
<p>Un paragraphe dans un div</p>
</div>
<div ondblclick="this.style.backgroundColor='red'"
<p>Un autre paragraphe dans le div</p>
</div>
</body>
</html>
48
Gestionnaires d’évènements
Utiliser les propriétés JavaScript pour gérer un évènement
Chaque évènement est représenté en JavaScript par un objet basé sur
l’interface Event.
Les gestionnaires d’évènements sont des propriétés de la forme
« on »+ nom de l’évènement géré.
On va passer le code à exécuter en cas de déclenchement de
l’évènement en valeur de la propriété relative à l’évènement et allons
utiliser ces propriétés à partir d’objets Element
49
Gestionnaires d’évènements
Utiliser les propriétés JavaScript pour gérer un évènement
Contenu du fichier HTML
<!DOCTYPE html>
<html>
<head>
<title>Cours JavaScript</title>
<meta charset="utf-8"> Contenu du fichier cours.js
<link rel="stylesheet" href="cours.css"> //On sélectionne le button d’id #bt1 et le div d’id #div1 du document
<script src='cours.js' async></script> let b1 = document.querySelector("#bt1");
</head> let d1 = document.querySelector("#div1");
<body>
<h1>Titre principal</h1> //On utilise les propriétés gestionnaires d'évènement avec nos éléments
<p>Un premier paragraphe</p> b1.onclick = function(){alert('Bouton cliqué')};
<button id="bt1">Cliquez moi !</button> d1.onmouseover = function(){this.style.backgroundColor ='orange'};
<div id="div1"> d1.onmouseout = function(){this.style.backgroundColor='white'};
<p>Un paragraphe dans un div</p>
<p>Un autre paragraphe dans le div</p>
</div>
</body>
</html>
50
Gestionnaires d’évènements
Utiliser les propriétés JavaScript pour gérer un évènement
Notez que cette façon de faire est moins efficace et performante que la
suivante car chaque objet ne va pouvoir posséder qu’une propriété
gestionnaire d’évènements pour un même type d’évènements ce qui
signifie qu’on ne va pas pouvoir réagir plusieurs fois de façons différentes à
un même évènement à partir d’un même élément.
51
Gestionnaires d’évènements
Utiliser la méthode addEventListener() pour gérer un
évènement
Cette dernière façon de gérer les évènements est la manière
recommandée aujourd’hui car c’est la plus flexible et la plus performante.
52
Gestionnaires d’évènements
Utiliser la méthode addEventListener() pour gérer un
évènement
Contenu du fichier HTML
<!DOCTYPE html>
<html>
<head>
<title>Cours JavaScript</title>
Contenu du fichier cours.js
<meta charset="utf-8">
//On sélectionne le button d’id #bt1 et le div d’id #div1 du document
<link rel="stylesheet" href="cours.css">
let b1 = document.querySelector("#bt1");
<script src='cours.js' async></script>
let d1 = document.querySelector("#div1");
</head>
<body>
//On utilise la méthode addEventListener pour gérer des évènements
<h1>Titre principal</h1>
b1.addEventListener('click', function(){alert('Bouton cliqué')});
<p>Un premier paragraphe</p>
d1.addEventListener('mouseover', function(){this.style.backgroundColor ='orange'});
<button id="bt1">Cliquez moi !</button>
d1.addEventListener('mouseover', function(){this.style.fontWeight ='bold'});
<div id="div1">
d1.addEventListener('mouseout', function(){this.style.backgroundColor='white'});
<p>Un paragraphe dans un div</p>
<p>Un autre paragraphe dans le div</p>
</div>
</body>
</html>
53
Gestionnaires d’évènements
Supprimer un gestionnaire d’évènements avec
removeEventListener()
La méthode removeEventListener() va nous permettre de
supprimer un gestionnaire d’évènement déclaré avec
addEventListener().
54
Gestionnaires d’évènements
Supprimer un gestionnaire d’évènements avec
removeEventListener() Exemple
<!DOCTYPE html> <div id="myDIV1">
<html> <p id="demo1"></p>
<head> <p id="demo2"></p>
<title>Cours JavaScript</title> <p id="demo3"></p>
<meta charset="utf-8"> </div>
<link rel="stylesheet" href="casino.css">
<script src='casino.js' async></script> </body>
</head> </html>
<body> Code CSS
<div id="myDIV">This div element has an onmousemove event #myDIV{
handler that displays a random number every time you move background-color:coral;
your mouse inside this orange field. border:1px solid; padding:50px;
<p>Click the button to remove the DIV's event handler.</p> color:white; }
55
Gestionnaires d’évènements
Supprimer un gestionnaire d’évènements avec
removeEventListener()
function myFunction1() {
code JavaScript document.getElementById("demo1").innerHTML =
let b1 = document.querySelector("#myBtn1"); Math.trunc(Math.random()*10); }
let b2 = document.querySelector("#myBtn2"); function myFunction2() {
let b3 = document.querySelector("#myBtn3"); document.getElementById("demo2").innerHTML =
let d1 = document.querySelector("#myDIV"); Math.trunc(Math.random()*10); }
function myFunction3() {
d1.addEventListener("mousemove", myFunction1); document.getElementById("demo3").innerHTML =
d1.addEventListener("mousemove", myFunction2); Math.trunc(Math.random()*10); }
d1.addEventListener("mousemove", myFunction3); function removeHandler1() {
d1.removeEventListener("mousemove", myFunction1); }
b1.addEventListener("click", removeHandler1);
b2.addEventListener("click", removeHandler2); function removeHandler2() {
b3.addEventListener("click", removeHandler3); d1.removeEventListener("mousemove", myFunction2); }
function removeHandler3() {
d1.removeEventListener("mousemove", myFunction3); }
56
Gestionnaires d’évènements
Supprimer un gestionnaire d’évènements avec
removeEventListener() Explication de l’exemple
d1.addEventListener("mousemove", myFunction1);
d1.addEventListener("mousemove", myFunction2);
d1.addEventListener("mousemove", myFunction3);
function myFunction1() {
document.getElementById("demo1").innerHTML =
Math.trunc(Math.random()*10);
}
function myFunction2() {
document.getElementById("demo2").innerHTML =
Math.trunc(Math.random()*10);
}
function myFunction3() {
document.getElementById("demo3").innerHTML =
Math.trunc(Math.random()*10);
}
57
Gestionnaires d’évènements
Supprimer un gestionnaire d’évènements avec
removeEventListener() Explication de l’exemple
b1.addEventListener("click", removeHandler1);
b2.addEventListener("click", removeHandler2);
b3.addEventListener("click", removeHandler3);
function removeHandler1() {
d1.removeEventListener("mousemove", myFunction1);
}
function removeHandler2() {
d1.removeEventListener("mousemove", myFunction2);
}
function removeHandler3() {
d1.removeEventListener("mousemove", myFunction3);
} 58
l’orienté objet en JavaScript
59
l’orienté objet en JavaScript
Création d’un objet JavaScript littéral et manipulation de ses membres
60
/*Notre variable "utilisateur" est ici une variable-objet
l’orienté objet en JavaScript let utilisateur = {
Création d’un objet littéral /*nom, age et mail sont des propriétés de l'objet utilisateur
*La valeur de la propriété "nom" est un tableau*/
nom : ['faouzi', 'dhieb'],
age : 29,
mail : '[email protected]',
Pour accéder aux propriétés et aux méthodes d’un objet, on utilise le caractère point . qu’on
appelle également un accesseur.
On va ici commencer par préciser le nom de l’objet puis l’accesseur puis enfin le membre
auquel on souhaite accéder.
Cet accesseur va nous permettre non seulement d’accéder aux valeurs de nos différents
membres mais également de modifier ces valeurs.
62
l’orienté objet en JavaScript
Utiliser le point pour accéder aux membres d’un objet, les modifier ou en
définir de nouveaux
let utilisateur = {
<!DOCTYPE html> //nom, age et mail sont des propriétés de l'objet "utilisateur "
<html> nom : ['faouzi', 'Dhieb'],
<head> age : 29,
<title>Cours JavaScript</title> mail : '[email protected]',
<meta charset="utf-8">
<link rel="stylesheet" //Bonjour est une méthode de l'objet utilisateur
href="cours.css"> //Le mot clef this sert à faire référence à l’objet qui est couramment manipulé.
<script src='objet2.js' bonjour: function(){
async></script> alert('Bonjour, je suis ' + this.nom[0] + ', j\'ai ' + this.age + ' ans');
</head> }
};
<body>
<h1>Titre principal</h1> /*On accède aux propriétés "nom" et "age" de "utilisateur " et on affiche leur valeur
<p>Un paragraphe</p> *dans nos deux paragraphes p id='p1' et p id='p2'*/
<p id='p1'></p>
<p id='p2'></p> document.getElementById('p1').innerHTML = 'Nom : ' + utilisateur .nom;
<p id='p3'></p> document.getElementById('p2').innerHTML = 'Age : ' + utilisateur .age;
</body>
</html> //On modifie la valeur de la propriété "age" de "utilisateur "
utilisateur.age = 30;
utilisateur .bonjour();
63
l’orienté objet en JavaScript
Utiliser le point pour accéder aux membres d’un objet, les modifier ou en
définir de nouveaux
On va encore pouvoir utiliser notre accesseur pour créer de nouveaux membres pour
notre objet. Pour cela, il suffit de définir un nouveau nom de membre et de lui passer une
valeur :
utilisateur .mesure();
64
l’orienté objet en JavaScript
Utiliser le point pour accéder aux membres d’un objet, les modifier ou en
définir de nouveaux
On va également pouvoir utiliser des crochets plutôt que le point pour accéder aux propriétés
de nos objets, mettre à jour leur valeur ou en définir de nouvelles.
let utilisateur = {
nom : ['faouzi ', 'Dhieb'],
age : 29,
mail : 'faouzi [email protected]',
bonjour: function(){
alert('Bonjour, je suis ' + this.nom[0] + ', j\'ai ' + this.age + ' ans');
}
};
65
l’orienté objet en JavaScript
La fonction constructeur d’objets : définition et création d’un constructeur
Créer des objets à partir d’une fonction constructeur
Une fonction constructeur d’objets est une fonction qui va nous permettre de créer des objets
semblables.
Pour construire des objets à partir d’une fonction constructeur, nous définissons tout d’abord
notre fonction constructeur et ensuite nous allons appeler ce constructeur en utilisant le mot
clefs new.
On définit ici une fonction Utilisateur() qu’on va utiliser comme constructeur d’objets.
Notez que lorsqu’on définit un constructeur, on utilise par convention une majuscule au début du nom de la
fonction afin de bien discerner nos constructeurs des fonctions classiques dans un script.
function Utilisateur(n, a, m){
this.nom = n;
this.age = a;
this.mail = m;
//this: Le mot clef qui va permettre de définir et d’initialiser les propriétés ainsi que les méthodes de
chaque objet créé.
this.bonjour = function(){
alert('Bonjour, je suis ' + this.nom[0] + ', j\'ai ' + this.age + ' ans');
}
}
//on crée de nouvelles instances à l’aide du mot clé new
let sami = new Utilisateur(['Sami', 'beji'], 29, '[email protected]');
let sondos = new Utilisateur(['Sondos', 'Trabelsi'], 27, '[email protected]');
let sarra = new Utilisateur(['Sarra', 'Hammi'], 19, '[email protected]');
67
l’orienté objet en JavaScript
Valeurs primitives et objets prédéfinis en JavaScript
68
l’orienté objet en JavaScript
Valeurs primitives et objets prédéfinis en JavaScript
<title>Cours JavaScript</title>
//true car les deux valeurs (et les types) sont égaux
<meta charset="utf-8">
document.getElementById('p1').innerHTML = 'ch1 == ch2 ? : ' +
<link rel="stylesheet" href="cours.css"> (ch1 === ch2);
<script src='primitives.js' async></script>
</head> //Trois objets
<body> let ob1 = {prenom : ‘Sami'};
let ob2 = {prenom : ‘Sami'};
<h1>Titre principal</h1>
let ob3 = ob1;
<p>Un paragraphe</p>
<p id='p1'></p>
//false car les deux objets ne font pas référence aux mêmes
<p id='p2'></p> membres
<p id='p3'></p> document.getElementById('p2').innerHTML = 'ob1 === ob2 ? : ' +
(ob1 === ob2);
</body>
</html>
//true car les deux objets font référence aux mêmes membres
document.getElementById('p3').innerHTML = 'ob1 === ob3 ? : ' +
(ob1 === ob3);
69
l’orienté objet en JavaScript
Valeurs primitives et objets prédéfinis en JavaScript
chaque type de valeur primitive, à l’exception de null et de undefined,
possède un équivalent objet prédéfini en JavaScript.
Ainsi, le JavaScript possède quatre objets natifs
String, Number, Boolean et Symbol qui contiennent des propriétés et des
méthodes.
Dans le code qui suit, notre variable ch1 contient une valeur primitive de type
chaine de caractères (string) tandis que la variable ch2 contient un objet String.
Ici, on utilise la propriété length et la méthode toUpperCase() définies dans le
constructeur String() sur notre objet de type string afin de connaitre la
longueur de la chaine de caractères et de renvoyer cette chaine en majuscules.
EXEMPLE:
let ch1 = 'Sami';
let ch2 = 'Sami beji‘ //L'espace est un caractère
//La propriété length renvoie la longueur d'une chaine
document.getElementById('p1').innerHTML = 'longueur du mot '+ ch1+ ' = ' + ch1.length;
document.getElementById('p2').innerHTML = 'longueur du mot '+ ch2+ ' = ' + ch2.length;
72
objets prédéfinis en JavaScript (objets natifs des objets « globaux ».)
L’objet global JavaScript String, propriétés et méthodes
document.getElementById('p7').textContent = "La première apparition de la lettre 's' est à l'indice " + ch.indexOf('s');
document.getElementById('p8').textContent = "La première apparition de la chaine 'je suis' est à l'indice " + ch.indexOf('je
suis');
document.getElementById('p9').textContent = "La dernière apparition de la lettre 's' est à l'indice " + ch.lastIndexOf('s');
74
objets prédéfinis en JavaScript (objets natifs des objets « globaux ».)
L’objet global JavaScript String, propriétés et méthodes
75
objets prédéfinis en JavaScript (objets natifs des objets « globaux ».)
L’objet global JavaScript String, propriétés et méthodes
Méthode Description
slice() La méthode slice() extrait une section d’une chaine de caractères et la retourne
comme une nouvelle chaine de caractères. La chaîne de caractères de départ n’est
pas modifiée.
On doit fournir en argument de départ obligatoire la position de départ dans la
chaine de caractères de départ où doit démarrer l’extraction. On peut également
passer en deuxième argument optionnel la positon où l’extraction doit s’arrêter.
substr(start, length) est similaire à slice (). La différence est que le deuxième paramètre spécifie la
longueur de la chaine extraite.
76
objets prédéfinis en JavaScript (objets natifs des objets « globaux ».)
L’objet global JavaScript String, propriétés et méthodes
77
objets prédéfinis en JavaScript (objets natifs des objets « globaux ».)
L’objet global JavaScript String, propriétés et méthodes
Méthode Description
replace() La méthode replace() nous permet de rechercher une expression
dans une chaine de caractères et de la remplacer par une autre.
On va passer deux arguments à cette méthode : l’expression à
rechercher, et l’expression de remplacement.
La méthode replace() va renvoyer une nouvelle chaine de caractères
avec les remplacements faits. La chaine de caractères de départ ne sera
pas modifiée.
Notez que dans le cas où on passe une expression de type chaine de
caractères à rechercher, seule la première occurrence dans la chaine
sera remplacée. Pour pouvoir remplacer toutes les occurrences, il
faudra passer une expression régulière comme schéma de recherche à
cette méthode. Nous étudierons les expressions régulières dans une
prochaine partie.
78
objets prédéfinis en JavaScript (objets natifs des objets « globaux ».)
L’objet global JavaScript String, propriétés et méthodes
</head>
<body>
<h1>La méthode replace()</h1>
<h2 id= 'h2'></h2>
<p id='p1'></p>
<p id='p2'></p>
</body>
</html>
79
objets prédéfinis en JavaScript (objets natifs des objets « globaux ».)
L’objet global JavaScript String, propriétés et méthodes
Méthode Description
toLowerCase() retourne une chaine de caractères en minuscules.
80
objets prédéfinis en JavaScript (objets natifs des objets « globaux ».)
L’objet global JavaScript String, propriétés et méthodes
82
objets prédéfinis en JavaScript (objets natifs des objets « globaux ».)
L’objet global JavaScript String, propriétés et méthodes
<body>
<h1>Les méthodes concat(), charAt, []</h1>
<h2 id= 'h2'></h2>
<p id='p1'></p>
<p id='p2'></p>
<p id='p3'></p>
</body>
</html>
83
objets prédéfinis en JavaScript (objets natifs des objets « globaux ».)
L’objet global JavaScript String, propriétés et méthodes
84
objets prédéfinis en JavaScript (objets natifs des objets « globaux ».)
L’objet global JavaScript String, propriétés et méthodes
document.getElementById("demo").innerHTML = res;
}
</script>
</body>
</html> 85
objets prédéfinis en JavaScript (objets natifs des objets « globaux ».)
L’objet global JavaScript Number, propriétés et méthodes
86
objets prédéfinis en JavaScript (objets natifs des objets « globaux ».)
L’objet global JavaScript Number, propriétés et méthodes
<body>
<h1>Propriétés de l'objet Number</h1>
<h2 id= 'h2'></h2>
<p id='p1'></p>
<p id='p2'></p>
<p id='p3'></p>
</body>
</html>
87
objets prédéfinis en JavaScript (objets natifs des objets « globaux ».)
L’objet global JavaScript Number, propriétés et méthodes
Méthode Description
isFinite() La méthode isFinite() permet de déterminer si une valeur fournie
est un nombre fini.
isInteger() permet de déterminer si une valeur est un entier valide. Si la valeur
testée est bien un entier, la méthode isInteger () renverra le
booléen true. Dans le cas contraire, cette méthode renverra la
booléen false.
Notez que si la valeur testée est NaN ou l’infini, la méthode
renverra également false.
isNaN() permet de déterminer si la valeur passée en argument est la
valeur NaN (valeur qui appartient au type Number).
isSafeInteger() permet de déterminer si une valeur est un entier sûr (un entier que
le JavaScript peut représenter correctement).
88
objets prédéfinis en JavaScript (objets natifs des objets « globaux ».)
L’objet global JavaScript Number, propriétés et méthodes
89
objets prédéfinis en JavaScript (objets natifs des objets « globaux ».)
L’objet global JavaScript Number, propriétés et méthodes
90
objets prédéfinis en JavaScript (objets natifs des objets « globaux ».)
L’objet global JavaScript Number, propriétés et méthodes
92
objets prédéfinis en JavaScript (objets natifs des objets « globaux ».)
L’objet global JavaScript Number, propriétés et méthodes
93
objets prédéfinis en JavaScript (objets natifs des objets « globaux ».)
L’objet global JavaScript Math, propriétés et méthodes
A la différence des autres objets globaux, l’objet natif Math n’est pas un constructeur. En
conséquence, toutes les propriétés et méthodes de cet objet sont statiques et vont donc
devoir être utilisées directement avec cet objet.
L’objet Math possède une dizaine de propriétés et une trentaine de méthodes.
Propriétés de l’objet Math: Les propriétés de l’objet Math stockent des constantes
mathématiques utiles.
Math.E a pour valeur le nombre d’Euler (exponentiel de 1), soit environ 2,718 ;
Math.LN2 a pour valeur le logarithme naturel (ou népérien) de 2, soit environ 0,693 ;
Math.LN10 a pour valeur le logarithme naturel de 10, soit environ 2,302 ;
Math.LOG2E a pour valeur le logarithme base 2 de E (exponentiel de 1), soit environ
1.44269;
Math.LOG10E a pour valeur le logarithme base 10 de E, soit environ 0.43429 ;
Math.PI a pour valeur pi, soit environ 3,14159 ;
Math.SQRT1_2 a pour valeur la racine carrée de ½, soit environ 0,707 ;
Math.SQRT2 a pour valeur la racine carrée de 2, soit environ 1,414.
94
objets prédéfinis en JavaScript (objets natifs des objets « globaux ».)
L’objet global JavaScript Math, propriétés et méthodes
document.getElementById('p1').innerHTML =
'Math.E : ' + Math.E
+ '<br>Math.LN2 : ' + Math.LN2
+ '<br>Math.LN10 : ' + Math.LN10
+ '<br>Math.LOG2E : ' + Math.LOG2E
+ '<br>Math.LOG10E : ' + Math.LOG10E
+ '<br>Math.PI : ' + Math.PI
+ '<br>Math.SQRT1_2 : ' + Math.SQRT1_2
+ '<br>Math.SQRT2 : ' + Math.SQRT2;
95
objets prédéfinis en JavaScript (objets natifs des objets « globaux ».)
L’objet global JavaScript Math, propriétés et méthodes
Méthode
L’objet Math Description
possède des méthodes qui permettent d’arrondir des nombres, de
générer des nombres
floor() aléatoires
Arrondit ou passée
la valeur encore en
deargument
calculer leà cosinus, sinus, tangente,
l’entier immédiatement
logarithme ou l’exponentielle
inférieur (ou d’un
égal)nombre.
à cette valeur.
ceil() au contraire, cette méthode va arrondir la valeur passée en
argument à l’entier immédiatement supérieur (ou égal) à cette
valeur.
round() arrondit la valeur passée en argument à l’entier le plus proche.
trunc() ignore la partie décimale d’un nombre et ne retourner que sa partie
entière.
96
objets prédéfinis en JavaScript (objets natifs des objets « globaux ».)
L’objet global JavaScript Math, propriétés et méthodes
97
objets prédéfinis en JavaScript (objets natifs des objets « globaux ».)
L’objet global JavaScript Math, propriétés et méthodes
Méthode Description
random() permet de générer un nombre décimal compris entre 0 (inclus) et 1
(exclu) de manière pseudo-aléatoire.
On va ensuite pouvoir multiplier son résultat par un autre nombre
N de notre choix afin d’obtenir un nombre pseudo-aléatoire
compris dans l’intervalle [0 N[
98
objets prédéfinis en JavaScript (objets natifs des objets « globaux ».)
L’objet global JavaScript Math, propriétés et méthodes
Méthode Description
min() renvoie le plus petit nombre d’une série de nombres passés en arguments.
Exemple: Math.min(50, 2.5, 5, 14);
max() La méthode au contraire, va renvoyer le plus grand nombre d’une série de
nombres passés en arguments. Exemple: Math.max(2, 75, -156);
Dans les deux cas, si l’une des valeurs fournies en argument n’est pas un
nombre et ne peut pas être convertie en nombre, alors ces méthodes
renverront la valeur NaN.
abs() renvoie la valeur absolue d’un nombre
cos(), sin(), tan(), retournent respectivement le cosinus, le sinus, la tangente, l’arc cosinus, l’arc
acos(), asin() et sinus et l’arc tangente d’une valeur passée en argument.
atan() Les valeurs passées et retournées sont exprimées en radians. Pour convertir
une valeur en radians en une valeur en degrés, il suffit de multiplier la valeur
en radians par 180 et de diviser par pi
exp() et log() renvoient respectivement l’exponentielle et le logarithme népérien (ou
logarithme naturel) d’une valeur passée en argument.
99
objets prédéfinis en JavaScript (objets natifs des objets « globaux ».)
Les tableaux en JavaScript et l’objet global Array
En JavaScript, les tableaux sont des objets qui dépendent de l’objet global Array.
Nous allons dans la suite voir comment définir des tableaux en JavaScript. Nous
nous intéresserons ensuite aux propriétés et méthodes de l’objet Array.
On va pouvoir stocker n’importe quel type de valeur en valeurs d’un tableau.
100
objets prédéfinis en JavaScript (objets natifs des objets « globaux ».)
Les tableaux en JavaScript et l’objet global Array
101
objets prédéfinis en JavaScript (objets natifs des objets « globaux ».)
Les tableaux en JavaScript et l’objet global Array
102
objets prédéfinis en JavaScript (objets natifs des objets « globaux ».)
Les tableaux en JavaScript et l’objet global Array
Déclaration accélérée
La déclaration du tableau des jours de la semaine peut se faire plus directement
en utilisant les paramètres du constructeur Array:
var tab=new Array("Lundi","Mardi","Mercredi","Jeudi","Vendredi","Samedi","Dimanche");
// afficher le tableau dans la console
console.table(tab);
103
objets prédéfinis en JavaScript (objets natifs des objets « globaux ».)
Les tableaux en JavaScript et l’objet global Array
var tab=["Lundi","Mardi","Mercredi","Jeudi","Vendredi","Samedi","Dimanche"];
console.table(tab);
104
objets prédéfinis en JavaScript (objets natifs des objets « globaux ».)
Les tableaux en JavaScript et l’objet global Array
105
objets prédéfinis en JavaScript (objets natifs des objets « globaux ».)
Les tableaux en JavaScript et l’objet global Array
Changer les indices
indice Lundi Mardi Mercredi Jeudi Vendredi Samedi Dimanche
var tab=["Lundi","Mardi","Mercredi","Jeudi","Vendredi","Samedi","Dimanche"];
var tabPlats=new Array();
tabPlats["Lundi"]="Pizza";
tabPlats["Mardi"]="Cordon bleu";
tabPlats["Mercredi"]="cornet escalope";
tabPlats["Jeudi"]="lasagnes";
tabPlats["Vendredi"]="poisson";
tabPlats["Samedi"]="tartiflette";
tabPlats["Dimanche"]="couscous";
//affichage dans la console
console.table(tabPlats);
//affichage sous forme de tableau html
var str = "";
str = str + "<table border=1>";
str = str + "<caption> Liste des plats </caption>";
for(i=0;i<tab.length;i++)
str = str + "<tr> <td>" + tab[i] + "</td> <td>" + tabPlats[tab[i]] + "</td> </tr>";
str = str + "</table>";
document.write(str); 106
objets prédéfinis en JavaScript (objets natifs des objets « globaux ».)
Les tableaux en JavaScript et l’objet global Array
Changer les indices
indice Lundi Mardi Mercredi Jeudi Vendredi Samedi Dimanche
107
objets prédéfinis en JavaScript (objets natifs des objets « globaux ».)
Les tableaux en JavaScript et l’objet global Array
Tableaux d’objets
Il est possible d'associer à un élément de tableau un objet JavaScript complexe.
Imaginons un tableau contenant tous les utilisateurs du site.
Un utilisateur est décrit par :
- son nom
- son mot de passe
- son droit d’accès
108
objets prédéfinis en JavaScript (objets natifs des objets « globaux ».)
Les tableaux en JavaScript et l’objet global Array
Tableaux d’objets
// une fonction constructeur qui cree un objet utilisateur
function Utilisateur(un_nom,un_pwrd,un_droit) {
this.nom=un_nom;
this.pwrd=un_pwrd;
this.droit=un_droit;
}
//on peut créer des utilisateur en faisant appel au constructeur
var sami=new Utilisateur("Sami Bouali","CA5585","administrator");
var sarra=new Utilisateur("Sarra Hammami","Sous2006","user");
var taoufik=new Utilisateur("Taoufik beji","TawTaw2021","user");
var lamia=new Utilisateur("Lamia ben Abbess","Lami325","user");
110
objets prédéfinis en JavaScript (objets natifs des objets « globaux ».)
Les tableaux en JavaScript et l’objet global Array
112
objets prédéfinis en JavaScript (objets natifs des objets « globaux ».)
Les tableaux en JavaScript et l’objet global Array
113
objets prédéfinis en JavaScript (objets natifs des objets « globaux ».)
Les tableaux en JavaScript et l’objet global Array
Code JavaScript de la solution
// ce code crée un tableau à deux dimensions ayant 10 lignes et 10 colonnes
var monTableau = new Array(10);
for (var i = 0; i < 10; i++)
{
monTableau[i] = new Array(10);
}
//On affecte une valeur de 0 à 99 à chaque case de la matrice
k=0;
for (var i = 0; i < 10; i++)
for (var j = 0; j < 10; j++)
{
monTableau[i][j] = k;
k++
}
114
objets prédéfinis en JavaScript (objets natifs des objets « globaux ».)
Les tableaux en JavaScript et l’objet global Array
Code JavaScript de la solution
// affichage du tableau bidimensionnel
var str= "<table border=1>";
str = str + "<caption> Nombres Premiers </caption>";
for (i = 0; i < 10; i++)
{
str=str+"<tr>";
for ( j = 0; j < 10; j++)
{
if (estPremier(monTableau[i][j]))
str=str+ "<td class='premier'>" + monTableau[i][j] + "</td>" ;
else
str=str+ "<td class='nonpremier'>" + monTableau[i][j] + "</td>" ;
}
str=str+"</tr>";
}
str=str+"</table>";
document.write(str);
115
objets prédéfinis en JavaScript (objets natifs des objets « globaux ».)
Les tableaux en JavaScript et l’objet global Array
117
objets prédéfinis en JavaScript (objets natifs des objets « globaux ».)
Les tableaux en JavaScript et l’objet global Array
118
objets prédéfinis en JavaScript (objets natifs des objets « globaux ».)
Les tableaux en JavaScript et l’objet global Array
Les propriétés et les méthodes du constructeur Array()
Les méthodes push() et pop():
let animaux = ['chat', 'chien', 'lion', 'tigre'];
let ages = [15, 10, 23, 35, 42];
document.getElementById('p1').innerHTML = " animaux avant push() [" + animaux +"]";
document.getElementById('p3').innerHTML = " ages avant pop() [" + ages +"]";
/*On ajoute 3 éléments à "animaux" et on récupère la nouvelle taille du tableau
*renvoyée par push() dans une variable "taille"*/
let taille = animaux. push('loup', 'cheval', 'zèbre');
//On supprime le dernier élément de ages et on récupère l'élément supprimé dans
elemSupprime
let elemSupprime = ages.pop();
document.getElementById('p2').innerHTML = " après push le tableau contient " + taille +"
élements :["+ animaux+ "]";
document.getElementById('p4').innerHTML = " l'élement supprimé est "+ elemSupprime + " les
élements restants dans ages : [" + ages+ "]";
119
objets prédéfinis en JavaScript (objets natifs des objets « globaux ».)
Les tableaux en JavaScript et l’objet global Array
120
objets prédéfinis en JavaScript (objets natifs des objets « globaux ».)
Les tableaux en JavaScript et l’objet global Array
Les propriétés et les méthodes du constructeur Array()
Les méthodes unshift() et shift():
let animaux = ['chat', 'chien', 'lion', 'tigre'];
let ages = [15, 10, 23, 35, 42];
document.getElementById('p1').innerHTML = " animaux avant shift() [" + animaux +"]";
document.getElementById('p3').innerHTML = " ages avant unshift() [" + ages +"]";
/*On ajoute 2 éléments au début de "animaux" et on récupère la nouvelle taille du tableau
*renvoyée par unshift() dans une variable "taille"*/
let taille = animaux. unshift('loup', 'cheval', 'zèbre');
//On supprime le premier élément de ages et on récupère l'élément supprimé dans elemSupprime
let elemSupprime = ages.shift();
document.getElementById('p2').innerHTML = " après shift le tableau contient " + taille +" élements
:["+ animaux+ "]";
document.getElementById('p4').innerHTML = " l'élement supprimé est "+ elemSupprime + " les
éléments restants dans ages : [" + ages+ "]";
121
objets prédéfinis en JavaScript (objets natifs des objets « globaux ».)
Les tableaux en JavaScript et l’objet global Array
Les propriétés et les méthodes du constructeur Array()
Méthode toString()
Dans le code précedent, vous pouvez noter qu’on arrive à afficher les différentes
valeurs de notre tableau animaux dans notre paragraphe simplement
avec document.getElementById('p1').innerHTML = animaux
Cela est dû au fait que lorsqu’un tableau doit être représenté par une valeur
texte, JavaScript appelle automatiquement la méthode toString() sur celui-ci qui
concatène les éléments du tableau et renvoie une chaîne de caractères contenant
chacun des éléments, séparés par des virgules.
122
objets prédéfinis en JavaScript (objets natifs des objets « globaux ».)
Les tableaux en JavaScript et l’objet global Array
Les propriétés et les méthodes du constructeur Array()
La méthode splice()
Permet d’ajouter, de supprimer ou de remplacer des éléments n’importe où dans
un tableau.
La méthode splice() va pouvoir prendre trois arguments : une position de
départ à partir d’où commencer le changement, le nombre d’éléments à
remplacer et finalement les éléments à ajouter au tableau.
En précisant une position négative, les changements seront faits en comptant à
partir de la fin :
Si on précise 0 en nombre d’éléments à remplacer, alors aucun élément ne sera
supprimé du tableau de base. Dans ce cas, il sera nécessaire de préciser des
éléments à rajouter.
Enfin, si on ne précise pas d’éléments à rajouter au tableau, le nombre d’éléments
à remplacer tel que précisé en deuxième argument seront supprimés du tableau
à partir de la position indiquée en premier argument.
Cette méthode va également retourner un tableau contenant les éléments
supprimés.
123
objets prédéfinis en JavaScript (objets natifs des objets « globaux ».)
Les tableaux en JavaScript et l’objet global Array
Les propriétés et les méthodes du constructeur Array()
La méthode splice()
let animaux = ['chat', :
'chien', 'lion', 'tigre'];
let ages = [15, 10, 23, 35, 42];
document.getElementById('p1').innerHTML = " animaux avant splice(2, 0, 'pandas', 'lièvre') [" + animaux +"]";
document.getElementById('p3').innerHTML = " ages avant splice(1, 2, 100) [" + ages +"]";
/*On insère 'pandas' et 'lièvre' dans le tableau animaux, après le deuxième élément
*(chien) et sans supprimer d'éléments*/
animaux.splice(2, 0, 'pandas', 'lièvre');
/*On supprime les deux éléments après le premier ( c'est à dire 10 et 23) et on insère 100 après le premier élément
(15) */
let del = ages.splice(1, 2, 100);
document.getElementById('p2').innerHTML = " animaux après splice(2, 0, 'pandas', 'lièvre') [" + animaux + "]";
document.getElementById('p4').innerHTML = " ages après splice(1, 2, 100) [" + ages + "]";
document.getElementById('p5').innerHTML = '"' + del + '" supprimé de ages';
124
objets prédéfinis en JavaScript (objets natifs des objets « globaux ».)
Les tableaux en JavaScript et l’objet global Array
Les propriétés et les méthodes du constructeur Array()
La méthode join()
retourne une chaine de caractères créée en concaténant les différentes valeurs
d’un tableau. Le séparateur utilisé par défaut sera la virgule mais nous allons
également pouvoir passer le séparateur de notre choix en argument de join().
125
objets prédéfinis en JavaScript (objets natifs des objets « globaux ».)
Les tableaux en JavaScript et l’objet global Array
Les propriétés et les méthodes du constructeur Array()
La méthode slice()
La méthode slice() renvoie un tableau créé en découpant un tableau de départ.
Cette méthode va prendre en premier argument facultatif la position de départ
où doit commencer la découpe de notre tableau de départ. Si la position passée
est un nombre négatif, alors le début de la découpe sera calculé à partir de la fin
du tableau de départ. Si aucune position de départ n’est passée, la découpe
commencera depuis le début du tableau de départ.
On va également pouvoir lui passer en second argument facultatif la position où
doit s’arrêter la découpe du tableau de départ. Si la position passée est un
nombre négatif, alors la fin de la découpe sera calculé à partir de la fin du tableau
de départ. Si aucune position de fin n’est passée, alors on récupèrera le tableau
de départ jusqu’à la fin pour créer notre nouveau tableau.
126
objets prédéfinis en JavaScript (objets natifs des objets « globaux ».)
Les tableaux en JavaScript et l’objet global Array
Les propriétés et les méthodes du constructeur Array()
La méthode slice()
let animaux = ['chat', :
'chien', 'lion', 'tigre'];
let ages = [15, 10, 23, 35, 42,52,66];
document.getElementById('p1').innerHTML = " animaux avant slice() [" + animaux +"]";
document.getElementById('p2').innerHTML = " ages avant slice() [" + ages +"]";
//appel à slice à partir de l'indice 1 jusqu'à l'indice 3
let sliceAnimaux = animaux.slice(1, 3);
//appel à slice à partir de l'indice 2 jusqu'à la fin
let sliceAges = ages.slice(2);
//appel à slice sans position début ni fin retourne tout le tableau
let sliceAges1 = ages.slice();
//appel à slice à partir de la position 4 en comptant à partir de la fin jusqu'a
// la position 2 en comptant à partir de la fin.
let sliceAges2 = ages.slice(-4,-2);
//appel à slice à partir de la position 4 en comptant à partir de la fin jusqu'a la fin du tableau
let sliceAges3 = ages.slice(-4);
127
objets prédéfinis en JavaScript (objets natifs des objets « globaux ».)
Les tableaux en JavaScript et l’objet global Array
Les propriétés et les méthodes du constructeur Array()
La méthode slice()
:
document.getElementById('p3').innerHTML = " animaux.slice(1, 3) " + sliceAnimaux.join(' - ');
document.getElementById('p4').innerHTML = "ages.slice(2) " + sliceAges.join(' / ');
document.getElementById('p5').innerHTML = "ages.slice() " + sliceAges1.join(' | ');
document.getElementById('p6').innerHTML = "ages.slice(-4,-2) " + sliceAges2.join(' | ');
document.getElementById('p6').innerHTML = "ages.slice(-4) " + sliceAges3.join(' | ');
128
objets prédéfinis en JavaScript (objets natifs des objets « globaux ».)
Les tableaux en JavaScript et l’objet global Array
Les propriétés et les méthodes du constructeur Array()
La méthode concat()
La méthode concat() va nous permettre de fusionner différents tableaux entre
eux pour en créer un nouveau qu’elle va renvoyer.
Cette méthode va prendre en arguments les tableaux que l’on souhaite
concaténer à un premier tableau de départ qu’on a choisi.
On peut fusionner autant de tableaux que l’on veut entre eux. Les tableaux de
départ ne sont pas modifiés.
let animaux = ['chat', 'chien', 'lion', 'tigre'];
let ages = [15, 10, 23, 35, 42,52,66];
let couleurs = ['jaune','rouge', 'vert', 'bleu', 'rose']
document.getElementById('p1').innerHTML = " animaux [" + animaux +"]";
document.getElementById('p2').innerHTML = " ages [" + ages +"]";
document.getElementById('p3').innerHTML = " couleurs [" + ages +"]";
let tabFusion = animaux.concat(ages, couleurs);
document.getElementById('p4').innerHTML = "fusion des 3 tableaux :[" + tabFusion.join ('-') + "]";
129
objets prédéfinis en JavaScript (objets natifs des objets « globaux ».)
Les tableaux en JavaScript et l’objet global Array
Les propriétés et les méthodes du constructeur Array()
La méthode includes()
La méthode includes() permet de déterminer si un tableau contient une valeur
qu’on va passer en argument. Si c’est le cas, includes() renvoie true. Dans le cas
contraire, cette méthode renvoie false.
Cette méthode est sensible à la casse (une majuscule est considérée comme une
entité différente d’une minuscule).
let animaux = ['chat', 'chien', 'lion', 'tigre'];
document.getElementById('p1').innerHTML = "contenu du tableau : ["+ animaux + "]";
if(animaux.includes('lion'))
document.getElementById('p2').innerHTML = " 'lion' est dans le tableau";
else document.getElementById('p2').innerHTML = " 'lion' n'est pas dans le tableau";
if(animaux.includes('Lion'))
document.getElementById('p3').innerHTML = "'Lion' est dans le tableau";
else document.getElementById('p3').innerHTML = " 'Lion' n'est pas dans le tableau";
130
objets prédéfinis en JavaScript (objets natifs des objets « globaux ».)
Les tableaux en JavaScript et l’objet global Array
Les propriétés et les méthodes du constructeur Array()
Le tri de tableaux méthodes sort() et reverse()
La méthode sort() trie le tableau par ordre croissant ou selon une fonction
définie par l’utilisateur
La méthode reverse() inverse l'ordre du tableau.
Utilisons notre tableau des mois de l'année et trions le par ordre alphabétique
avec sort()
131
objets prédéfinis en JavaScript (objets natifs des objets « globaux ».)
Les tableaux en JavaScript et l’objet global Array
Les propriétés et les méthodes du constructeur Array()
Le tri de tableaux méthodes sort() et reverse()
var
mois=["Janvier","Février","Mars","Avril","Mai","Juin","Juillet","Août","Septembre","Octobre","Novembre","Décembre"];
document.write("Affichage du tableau avant le tri :<br>");
document.write(mois.join(", "));
/* Tri du tableau */
mois.sort();
//mois.sort() ne retourne pas de résultat. C'est le tableau mois sur lequel est appliquée la méthode qui est trié.
document.write("<hr>Affichage du tableau trié :<br>");
document.write(mois.join(", "));
/* Inversion du tableau */
mois.reverse();
document.write("<hr>Affichage du tableau inversé :<br>");
document.write(mois.join(", "));
132
objets prédéfinis en JavaScript (objets natifs des objets « globaux ».)
Les tableaux en JavaScript et l’objet global Array
Les propriétés et les méthodes du constructeur Array()
Le tri de tableaux méthodes sort() avec méthode de Tri
spécifique
Nous venons de voir comment trier un tableau contenant des éléments
simples comme des nombres ou des chaînes. Il est aussi possible de trier
un tableau avec sa propre fonction de tri.
Voyons comment trier notre tableau tousMesAnimaux par âge:
133
objets prédéfinis en JavaScript (objets natifs des objets « globaux ».)
Les tableaux en JavaScript et l’objet global Array
Les propriétés et les méthodes du constructeur Array()
Le tri de tableaux méthodes sort() avec méthode de Tri
spécifique et parcours avec la méthode forEach()
function Animal(un_nom,une_espece,un_age) { this.nom=un_nom; this.espece=une_espece; this.age=un_age; }
var milou=new Animal("Milou","Chien","4");
var titi=new Animal("Titi","Oiseau","1");
var rominet=new Animal("Rominet","Chat","2");
var nemo=new Animal("Nemo","Poisson","6");
var dumbo=new Animal("Dumbo","chien","20");
var kingKong=new Animal("KingKong","gorille","50");
var animaux=new Array();
animaux[0]=milou; animaux[1]=titi; animaux[2]=rominet; animaux[3]=nemo; animaux[4]=dumbo;
animaux[5]=kingKong;
animaux.sort(function (a, b) { return a.age - b.age; });
animaux.forEach(function(animal) { document.write("Mon "+animal.espece+" "+animal.nom+" a "+animal.age+"
an(s).<br>"); });
<!DOCTYPE html>
<html>
<body>
<p>For each element in the array: multiply the value with 10 and update the element value:</p>
<p id="demo"></p>
<script>
var numbers = [65, 44, 12, 4];
numbers.forEach(myFunction);
function myFunction(item, index, arr) {
arr[index] = item * 10; }
document.getElementById("demo").innerHTML = numbers; </script>
</body> </html>
135
objets prédéfinis en JavaScript (objets natifs des objets « globaux ».)
Les tableaux en JavaScript et l’objet global Array
Les propriétés et les méthodes du constructeur Array()
array.forEach(function(currentValue, index, arr)) appelle une
fonction pour chaque élément d'un tableau, dans l'ordre.
CurrentValue: obligatoire ; la valeur de l'élément courant
Index: optionnel ; l'indice de l'élément courant
arr: optionnel; l'objet array auquel appartient l'élément
<!DOCTYPE html>
<html>
<body>
<p>List all array items, with keys and values:</p>
<p id="demo"></p>
<script>
var fruits = ["apple", "orange", "cherry"];
fruits.forEach(myFunction);
function myFunction(item, index) {
document.getElementById("demo").innerHTML += index + ":" + item + "<br>";
}</script>
</body></html>
136
objets prédéfinis en JavaScript (objets natifs des objets « globaux ».)
Les dates en JavaScript et l’objet global Date
l’objet Date permet de créer et de manipuler des dates grâce à ses méthodes.
Les propriétés et les méthodes du constructeur Date()
Récupérer la date actuelle :
Pour récupérer la date actuelle sous forme littérale, on va utiliser Date().
Pour afficher cette même date sous forme de nombre (le nombre de
millisecondes écoulées depuis le 1er janvier 1970), on peut utiliser la méthode
statique now() du constructeur Date.
let date1 = Date();
let date2 = Date.now();
doument.getElementById('p1').innerHTML = date1;
document.getElementById('p2').innerHTML = date2;
la forme littérale est difficilement exploitable telle quelle pour nous car celle-ci
suit les normes anglo-saxonnes. Nous allons voir comment afficher nos dates
137
avec un format local dans la suite de cette leçon.
objets prédéfinis en JavaScript (objets natifs des objets « globaux ».)
Les dates en JavaScript et l’objet global Date
138
objets prédéfinis en JavaScript (objets natifs des objets « globaux ».)
Les dates en JavaScript et l’objet global Date
142
objets prédéfinis en JavaScript (objets natifs des objets « globaux ».)
Les dates en JavaScript et l’objet global Date
144
objets prédéfinis en JavaScript (objets natifs des objets « globaux ».)
Les dates en JavaScript et l’objet global Date
Les propriétés et les méthodes du constructeur Date()
Convertir une date au format local L’objet Date dispose également de
méthodes nous permettant de convertir un format de date en un format local.
Ces méthodes vont notamment nous permettre de :
1. afficher les éléments de date dans un ordre local (jour puis mois puis année par
exemple)
2. afficher une heure selon un format 12 heures ou 24 heures.
3. traduire des dates littérales anglaises dans la langue locale.
Pour faire cela, on va pouvoir utiliser les méthodes suivantes :
toLocaleDateString() renvoie la partie « jour-mois-année » d’une date, formatée
en fonction d’une locale et d’options.
toLocaleTimeString() renvoie la partie « heures-minutes-secondes » d’une date,
formatée en fonction d’une locale et d’options.
toLocaleString() renvoie la date complète, formatée en fonction d’une locale et
d’options.
Ces trois méthodes vont donc pouvoir prendre deux arguments : un premier
argument qui est une locale et un second qui correspond à des options.
La locale sert à définir la langue dans laquelle la date doit être formatée. Pour la
Tunisie on utilisera ‘ar-TN’ (Arabic (Tunisia)) pour la France, on utilisera ’fr-FR’.
(pour la liste des locales consulter http://www.lingoes.net/en/translator/langcode.htm)
145
objets prédéfinis en JavaScript (objets natifs des objets « globaux ».)
Les dates en JavaScript et l’objet global Date
Convertir une date au format local
Les options vont permettre de modifier le comportement par défaut de nos méthodes
et notamment d’expliciter si on souhaite que la date passée soit renvoyée sous forme
de chiffres ou sous forme littérale. Les options qui vont particulièrement nous
intéresser vont être les suivantes :
weekday qui représente le jour de la semaine. Les valeurs possibles sont « narrow »,
« short » et « long » ;
day qui représente le jour du mois. Les valeurs possibles sont numeric et 2-digit ;
month qui représente le mois. Les valeurs possibles sont numeric et 2-digit ;
year qui représente l’année. Les valeurs possibles sont numeric et 2-digit ;
hour qui représente l’heure. Les valeurs possibles sont numeric et 2-digit ;
hour12 qui prend la valeur true pour un affichage 12h et false pour un affichage 24h
minute qui représente les minutes. Les valeurs possibles sont numeric et 2-digit ;
second qui représente les secondes. Les valeur possibles sont numeric et 2-digit.
146
objets prédéfinis en JavaScript (objets natifs des objets « globaux ».)
Les dates en JavaScript et l’objet global Date
147
objets prédéfinis en JavaScript (objets natifs des objets « globaux ».)
Les dates en JavaScript et l’objet global Date
148
objets prédéfinis en JavaScript (objets natifs des objets « globaux ».)
Les dates en JavaScript et l’objet global Date
149
Document Object Model (DOM)
Introduction
Quand une page Web est chargée, le navigateur crée un modèle objet de document
(Document Object Model) de la page. Le modèle DOM HTML est construit comme un
arbre d'objets.
150
Document Object Model (DOM)
151
Document Object Model (DOM)
152
Document Object Model (DOM)
Avec le modèle objet, JavaScript obtient toute la puissance dont il a besoin pour
créer HTML dynamique :
JavaScript peut changer tous les éléments HTML dans la page
JavaScript peut changer tous les attributs HTML dans la page
JavaScript peut changer tous les styles CSS dans la page
JavaScript peut supprimer des éléments et attributs HTML existants
JavaScript peut ajouter de nouveaux éléments et attributs HTML
JavaScript peut réagir à tous les événements de HTML existants dans la page
JavaScript peut créer de nouveaux événements HTML dans la page
153
Document Object Model (DOM)
155
Document Object Model (DOM)
156
Document Object Model (DOM)
Ecriture
document.getElementById(identifiant_element).value = texte
Ou bien
document.nom_formulaire.nom_element.value = texte
157
Document Object Model (DOM)
158
Document Object Model (DOM)
// fichierCV prend dans l'exemple la valeur ‘C:\fakepath\cv.docx’ // pour cacher la structure des fichiers du client
159
Document Object Model (DOM)
160
Document Object Model (DOM)
document.getElementById(identifiant_element).checked
// Retourne une valeur true/false
document.getElementById(identifiant_element).value
// Retourne le nom donné à la boîte
161
Document Object Model (DOM)
Accès aux choix cochés par le client
Exemple 1 : Pour les boutons radio
//Code HTML dans l’élément Form
<input type="radio" name="etatCivil" value="celibataire" id="celibataire" />
<label for="celibataire">célibataire</label><br>
<input type="radio" name="etatCivil" value="marié" id="marie" />
<label for="marie">marié</label><br>
<input type="radio" name="etatCivil" value="divorcé" id="divorce" />
<label for="divorce">divorcé</label><br>
<input type="radio" name="etatCivil" value="veuf" id="veuf" />
<label for="veuf">veuf</label><br>
163
Document Object Model (DOM)
Cocher ou décocher un choix
document.getElementById(identifiant_element).checked = true/false
Exemple 3.2 : Instruction JavaScript qui décoche ce qui est coché et coche ce qui ne l'est pas
164
Document Object Model (DOM)
Accès aux choix dans les listes de choix element select
Lire Les choix
document.getElementById(identifiant_element)[num_element].selected
// Retourne une valeur true/false
document.getElementById(identifiant_element)[num_element].value
// Retourne le nom donné au choix
document.getElementById(identifiant_element).length
// Retourne le nombre de choix possibles dans la liste
document.getElementById(identifiant_element)[num_element].text
// Retourne le texte HTML associé
Exemple 4 :
Document Object Model (DOM)
Accès aux choix dans les listes de choix element select
Lire Les choix
Exemple 4 : pour une liste à choix multiple (qui fonctionne pour le choix unique également)
alert("liste des Valeurs :" + listeComp + " Liste de textes " + listeCompText);
Document Object Model (DOM)
Accès aux choix dans les listes de choix element select
Lire Les choix
Pour les listes à choix unique il est possible d'obtenir directement quel est le
choix sélectionné avec :
document.getElementById(identifiant_element).selectedIndex
Exemple 8
// code Html pour la gestion de l'évènement
<body onload="setFocus()">
// code javaScript permettant d'attribuer le focus à l'élément nom lors du chargement du document
function setFocus()
{
document.getElementById('nom').focus();
}
Document Object Model (DOM)
Méthodes
blur() : enlève le focus d'un champ du formulaire
click() :simule un clic de souris sur le champ du formulaire
focus() : attribue le focus à un champ du formulaire
select() :sélectionne le contenu d'un champ du formulaire
document.getElementById('id').blur()
document.getElementById('id').click()
document.getElementById('id').focus();
document.getElementById('id'). select()
Exemple 9
// code Html pour la gestion de l'évenement
<select name="competences" id="competences" multiple onblur="clickSimulate()">
// code javaScript permettant de simuler un click sur le bouton permettant d'apploder le fichie CV
lorsque l'élément compétences perd le focus
function clickSimulate()
{
document.getElementById('fichier').click();
}
Document Object Model (DOM)
Activer ou désactiver des contrôles
Il est possible de désactiver ou d'activer des contrôles d'un formulaire pour les éléments
INPUT, BUTTON, TEXTAREA et SELECT en réponse à un événement.
Prenons l'exemple dessiné ci-dessous qui active le champ pour entrer le nombre
d'enfants uniquement si on clique sur les boutons radio qui correspondent aux états civile
marié, divorcé ou veuf et qui désactive le champ si on clique sur le bouton célibataire :
Exemple 10
//HTML qui permet d'effectuer ces actions :
<input type="radio" name="etatCivil" value="celibataire" id="celibataire" onclick= "desactiver()" />
<label for="celibataire">célibataire</label><br>
<input type="radio" name="etatCivil" value="marié" id="marie" onclick= "activer()" />
<label for="marie">marié</label><br>
<input type="radio" name="etatCivil" value="divorcé" id="divorce" onclick= "activer()" /> <label
for="divorce">divorcé</label><br>
<input type="radio" name="etatCivil" value="veuf" id="veuf" onclick= "activer()" />
<label for="veuf">veuf</label><br>
{ document.getElementById('nbEnfants').disabled = false; }
function desactiver()
{ document.getElementById('nbEnfants').disabled = true; } L'élément nombre enfants est activé