Chapitre 6.2 - Le Javascript⚓︎
1. Présentation⚓︎
JavaScript a été créé en 1995 par Brendan Eich. Il a été standardisé sous le nom d'ECMAScript en juin 1997 par Ecma International dans le standard ECMA-262.
JavaScript est un langage de programmation principalement employé dans les pages web en complétement de HTML et CSS
pour les rendre interactives (réaction de la page web aux interventions de l'utilisateur).
Il permet d'écrire des scripts : c'est un langage interprété par le navigateur, coté client.
2. Intégrer le JavaScript⚓︎
Pour être exécuté, le JavaScript doit être intégré à la page HTML. Il existe différentes méthodes pour intégrer le JavaScript, nous allons en étudier une : le code JavaScript est écrit dans un fichier avec l'extension .js (par exemple script.js). Il faut ensuite ajouter une ligne dans le code HTML afin de lier ce dernier au fichier script.js
:
!! Example "intégrer le JavaScript"
l'attribut src
de la balise script doit ĂŞtre Ă©gal au chemin vers le fichier qui contient le JavaScript.
Voici un exemple de fichier HTML associé avec un fichier script.js :
HTML et JavaScript
Comme vous pouvez le constater ci-dessus la balise script est placée après la balise body fermante (il est aussi possible de placer la balise script dans la partie head, mais ce choix peut entraîner certains problèmes si on ne prend pas certaines précautions, on préférera donc placer la balise script après le body).
3. Comparaison des syntaxes entre Python et JavaScript⚓︎
On retrouve les mĂŞmes structures de base dans tous les langages informatiques, mais la syntaxe varie.
Comme beaucoup d'autres langages, la syntaxe de JavaScript provient du langage C (avec des spécificités).
3.1. Les commentaires en JavaScript⚓︎
y = 2*n; // Ceci est un commentaire sur le reste de la ligne
/*
Ceci est un commentaire
sur plusieurs lignes
*/
3.2. Les variables⚓︎
Contrairement à python, les variables utilisées en JavaScript doivent être déclarées.
var variable1, variable2 = "exemple"; // domaine d'existence limité à la fonction où elle sont déclarées.
let variable3; // domaine d'existence limité au bloc où elle est déclarée.
const vitesseLumiere = 3e8; // définit une constante (qu'on ne peut pas modifier par la suite).
variable2 = "exemple2"; // affectation d'une nouvelle valeur Ă variable2
let
ou const
Ă l'utilisation de var
qui date des tous débuts de JavaScript.
Exemple d'utilisation de vairable
Affichage correspondant :3.3. Autres exemples de syntaxe⚓︎
python | JavasScript | Commentaires |
---|---|---|
| ||
La boucle `for` est constituée de 3 champs :
| ||
| ||
|
4. Le JavaScript pour répondre à des événements⚓︎
4.1. Notion d'événements⚓︎
Il est possible d'associer des événements aux différentes balises HTML, ces événements sont très souvent des actions réalisées pour l'utilisateur de la page :
- l'événement onclik correspond à un clic de souris (bouton gauche) sur un élément HTML donné
- l'événement onmouseover correspond au survol d'un élément HTML par le curseur de la souris
Il existe beaucoup d'autres événements, dans le cadre de ce cours nous utiliserons uniquement les deux cités ci-dessus.
4.2. Quelques exemples de détection d'évènements.⚓︎
Réaction aux évènements de la souris
Evenements | Description | Exemple d'utilisation |
---|---|---|
onclick |
Le clic de la souris sur un élément | <h1 onclick="this.innerHTML = 'Ooops!'">Click on this text!</h1> |
ondblclick |
Le double-clic de la souris sur un élément | <h1 onclick="this.innerHTML = 'Ooops! Ooops!'">Click on this text!</h1> |
onmouseover |
Le survol de la souris sur un élément | <div onmouseover="this.style.backgroundColor = 'lightblue'"> |
onmouseout |
La sortie de la souris d'un élément | <div onmouseout="this.style.backgroundColor = 'yellow'"> |
onmousedown |
Le maintien du clic appuyé sur un élément | <div onmousedown="this.style.color = 'white'"> |
onmouseup |
Le relachement du clic de souris | <div onmouseup="this.style.color = 'blue'"> |
Réactions aux évènements sur les <input type="text"/>
Evenements | Description | Exemple d'utilisation |
---|---|---|
onfocus |
Positionnement du curseur dans le input |
<input type="text" onfocus="this.style.border='solid 2px maroon"> |
onselect |
SĂ©lection du contenu de la saisie | <input type="text" onselect="this.style.color = 'red'"> |
onblur |
Sortie du champ du input |
<input type="text" onblur="this.style.backgroundColor = 'grey'"> |
onkeydown |
Le maintien d'une touche clavier appuyée | <div onkeydown="this.style.borderStyle = 'dashed'"> |
onkeyup |
Le relachement de la touche clavier | <div onkeyup="this.style.borderStyle = 'double'"> |
onchange |
Changement d'option sur une liste déroulante | Voir l'exemple |
RĂ©actions au chargement de pages ou d'images
Evenements | Description | Exemple d'utilisation |
---|---|---|
onload |
Quand la page (ou l'image) est chargée | <body onload="checkCookies()"> |
onerror |
lors d'une erreur de chargement d'une image | Voir l'exemple |
onunload |
Lors de la fermeture de la page | Voir l'exemple |
onresize |
Changement d'option sur une liste déroulante | Voir l'exemple |
Exemple d'Ă©vements
Source HTML
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title>Les évènements en Javascript</title>
</head>
<body>
<div id="bloc_page"
onmouseover="this.style.backgroundColor = 'yellow'"
onmouseout="this.style.backgroundColor = 'lightblue'"
onmousedown="this.style.color = 'white'"
onmouseup="this.style.color = 'blue'">
<h1 onclick="this.innerHTML = 'Ooops!'"
ondblclick="this.innerHTML = 'Ooops! Ooops!'">Mon super site</h1>
<p>Zone de saisie de type <code> input type="text"</code> : </p>
<input type="text"
onfocus="this.style.border='solid 4px maroon'"
onselect="this.style.color = 'red'"
onfocusin="this.style.backgroundColor = 'white'"
onblur="this.style.backgroundColor = 'lightgrey'"
onkeydown="this.style.borderStyle = 'dashed'"
onkeyup="this.style.borderStyle = 'dotted'">
</div>
</body>
</html>
Réaliser les différents évènements de souris et de clavier sur les différents éléments
<div>
, <h1>
et <input>
.
Mon super site
Zone de saisie de type input type="text"
:
4.3. Réponse à un événement⚓︎
Un clic de souris vient d'être effectué sur un élément HTML, que va-t-il se passer ?
Dans la plupart des cas rien...si le développeur n'a pas prévu de gérer cet événement, il ne se passera rien.
Comment gérer un événement ?
Il suffit d'ajouter un attribut à la balise HTML concernée, prenons un exemple :
Nous avons ici une balise button qui possède un attribut onclick. Cet attribut onclick est égal à maFonction()
. maFonction est une fonction défini dans le fichier JavaScript qui est associé à la page HTML (par exemple le fichier script.js
). En cas de clic sur le bouton défini ci-dessus, la fonction JavaScript maFonction
sera exécutée.
4.4. Les fonctions en JavaScript⚓︎
Comment Ă©crire une fonction en JavaScript ?
Il suffit d'utiliser le mot clé function
suivi du nom de la fonction :
4.5. Etudions un exemple : Modifier un élément HTML avec le JavaScript⚓︎
En cas de clic sur le bouton défini ci-dessus, la fonction JavaScript maFonction sera exécutée, mais qu'est-il possible de faire avec le JavaScript ?
Aujourd'hui, presque tout : il est possible de coder des applications extrêmement complexes en JavaScript. Nous allons rester modestes, nous allons uniquement modifier un élément HTML.
Pour modifier un élément HTML il est tout d'abord nécessaire de le sélectionner : c'est le rôle des querySelector
.
Considérons le code HTML suivant :
<!doctype html>
<html lang="fr">
<head>
<meta charset="utf-8">
<title>Le trio</title>
<link rel="stylesheet" href="style.css">
</head>
<body>
<h1>Le trio : HTML, CSS et JavaScript</h1>
<p id="monPara">Voici une page web qui ne fait pas grand chose</p>
<button onclick="maFonction()">Cliquer ici</button>
</body>
<script src="script.js"></script>
</html>
et le code JavaScript suivant (fichier script.js
) :
maBalise
(on aurait Ă©videmment pu choisir un autre nom). Cette variable maBalise
va nous permettre de manipuler l'élément HTML qui a pour id monPara
(c'est-Ă -dire la balise p
présente dans le code HTML ci-dessus).
dans le cas ci-dessus nous remplacerons le texte présent dans la balise p
("Voici une page web qui ne fait pas grand chose") par "coucou".
Autre exemple :
function maFonction() {
let maBalise = document.querySelector("#monPara");
maBalise.style.color="red";
}
Il est aussi possible de modifier les classes CSS associées à une balise HTML, prenons un exemple :
soit le code HTML :
<!doctype html>
<html lang="fr">
<head>
<meta charset="utf-8">
<title>Le trio</title>
<link rel="stylesheet" href="style.css">
</head>
<body>
<h1>Le trio : HTML, CSS et JavaScript</h1>
<p id="monPara">Voici une page web qui ne fait pas grand-chose</p>
<button onclick="foncRouge()">Rouge</button>
</body>
<script src="script.js"></script>
</html>
function foncRouge() {
let maBalise = document.querySelector("#monPara");
maBalise.classList.add("rou");
}
-
un utilisateur clique sur le bouton Rouge, comme un événement
onclick
est associé à ce bouton, la fonction JavaScriptfoncRouge
est donc exécutée -
la variable maBalise correspond Ă la balise
p
du code HTML(let maBalise = document.querySelector("#monPara");)
-
on associe ensuite cette balise
p
Ă la classe CSS rouge : le texte contenu dans la balisep
devient donc rouge(maBalise.classList.add("rou");)
Exercice 1
-
dans votre répertoire de travail, créez un fichier
index.html
, un fichierstyle.css
et un fichierscript.js
-
copiez-collez le code suivant dans le fichier
index.html
qui vient d'être créé
<!doctype html>
<html lang="fr">
<head>
<meta charset="utf-8">
<title>Le trio</title>
<link rel="stylesheet" href="style.css">
</head>
<body>
<h1>Le trio : HTML, CSS et JavaScript</h1>
<p id="monPara">Voici une page web qui ne fait pas grand-chose</p>
<button onclick="foncRouge()">Rouge</button>
<button onclick="foncVert()">Vert</button>
</body>
<script src="script.js"></script>
</html>
style.css
qui vient d'être créé
h1{
text-align: center;
}
.rouge {
color:red;
font-size:20px;
}
.vert {
color:green;
font-size:30px;
}
- copiez-collez le code suivant dans le fichier
script.js
qui vient d'être créé
function foncRouge() {
let balp= document.querySelector("#monPara")
balp.classList.remove("vert");
balp.classList.add("rouge");
}
function foncVert() {
let balp= document.querySelector("#monPara")
balp.classList.remove("rouge");
balp.classList.add("vert");
}
h1
et double sa taille (40 px)
<!doctype html>
<html lang="fr">
<head>
<meta charset="utf-8">
<title>Le trio</title>
<link rel="stylesheet" href="style.css">
</head>
<body>
<h1 id="montitre">Le trio : HTML, CSS et JavaScript</h1>
<p >Voici une page web qui ne fait pas grand-chose</p>
<button onclick="foncRouge()">Rouge</button>
<button onclick="foncVert()">Vert</button>
</body>
<script src="script.js"></script>
</html>
Exercice 2
Créez la page web suivante :
si l'utilisateur clique sur le bouton Changer, le texte COUCOU ! devient rouge, si on appuie de nouveau sur le bouton Changer, le bouton redevient noir (si on appuie de nouveau sur le bouton, COUCOU ! redevient rouge...)
Exercice 3
Soit la page HTML suivante :
index.html
<!doctype html>
<html lang="fr">
<head>
<meta charset="utf-8">
<title>Le trio</title>
<link rel="stylesheet" href="style.css">
</head>
<body>
<div></div>
</body>
<script src="script.js"></script>
</html>
style.css
Soit la page HTML suivante :
index.html
<!doctype html>
<html lang="fr">
<head>
<meta charset="utf-8">
<title>Le trio</title>
<link rel="stylesheet" href="style.css">
</head>
<body>
<div id="demo" onmouseover = mouseOver() onmouseout = mouseOut()></div>
<div id="demo1" onmouseover = mouseOver1() onmouseout = mouseOut1()></div>
</body>
<script src="script.js"></script>
</html>
style.css
function mouseOver() {
let boite= document.querySelector("#demo")
boite.style.backgroundColor="red";
}
function mouseOut() {
let boite= document.querySelector("#demo")
boite.style.backgroundColor="black";
}
function mouseOver1() {
let boite= document.querySelector("#demo1")
boite.style.backgroundColor="black";
}
function mouseOut1() {
let boite= document.querySelector("#demo1")
boite.style.backgroundColor="red";
}
5. Les formulaires en JavaScript⚓︎
Un formulaire permet à un client (navigateur) de transmettre des données à un serveur.
Le formulaire est le bloc qui organise la saisie des données et qui les envoie au serveur lors de sa validation (submit
).
Il est intéressant de gérer les formulaires avec JavaScript car il permet de traiter plus facilement
les données envoyées par le formulaire.
6. Formulaire simple en HTML⚓︎
Exemple de formulaire simple en HTML
Source HTML
<html>
<head>
<meta charset="utf-8" />
<title>Les formulaires en Javascript</title>
</head>
<body>
<form action="http://lycee-corot-morestel.fr/" target="_blank" method="POST">
<p>Input de type texte : <input type="text" name="saisie" placeholder="Saisir un texte"></p>
<input type="submit" value="Validation">
</form>
</body>
</html>
**Commentaires : **
- Le formulaire exécute l'
action
(accès à une nouvelle page) lors de l'appui sur le button de typesubmit
. - Grâce à la méthode
POST
on peut récupérer la valeur (contenu de l'attributvalue
) des différents éléments contenus dans le formulaire à l'aide du nom de l'élément (attributname
).
6.1. Formulaire simple en JS⚓︎
Ecriture en JavaScript du mĂŞme formulaire simple
Source HTML
<html>
<head>
<meta charset="utf-8" />
<title>Les formulaires en Javascript</title>
</head>
<body>
<form action="http://lycee-corot-morestel.fr/" target="_blank" method="POST">
<p>Input de type texte : <input type="text" name="saisie" placeholder="Saisir un texte"></p>
<input type="button" value="Validation" onClick="this.form.submit()">
</form>
</body>
</html>
Commentaires :
- Ce formulaire effectue la même chose que le formulaire HTML ci-dessus. Donc peut d'intérêt.
- Il permet d'introduire la méthode JavaScript spécifique aux formulaires : submit()
.
- Le mot clé this
est une référence à l'objet en cours de manipulation. Il simplifie la syntaxe.
6.2. Exécution d'une fonction⚓︎
Copier l'exemple ci-dessous dans un fichier HTML pour le tester.
Validation du formulaire par un clic sur une image
Source HTML
<html>
<head>
<meta charset="utf-8" />
<title>Les formulaires en Javascript</title>
</head>
<body>
<form id="formulaire" action="http://lycee-corot-morestel.fr/" target="_blank" method="POST">
Input de type texte : <input id="saisie" type="text" name="saisie" placeholder="Saisir un texte"><br>
<img src="./data/smiley.jpg" onClick="validation_formulaire()"/>
</form>
<script>
function validation_formulaire() {
let formElement = document.getElementById('formulaire');
let elementValue = document.getElementById('saisie').value;
alert("Valeur saisie : " + elementValue);
formElement.submit();
}
</script>
</body>
</html>
Commentaires :
- L'attribut onClick
de la balise img
appelle la fonction validation_formulaire()
.
- La variable formElement
référence le formulaire : on lui applique la méthode submit()
.
- On peut profiter de la fonction pour faire d'autres traitements tel qu'afficher le contenu
de la zone de saisie dans une boîte de dialogue alert
.