1. Objectif de l’activité
-
Apprendre à utiliser JavaScript pour agir sur le contenu et sur le format d’une page web
2. JavaScript
JavaScript est un langage interprété. Embarqué dans une page web ou lié à une page web, il permet d’agir sur son contenu, sa structure et sa mise en page. C’est un des trois langages web que doit connaitre tout développeur web :
-
HTML pour définir le contenu des pages web
-
CSS pour spécifier la mise en page des pages web
-
JavaScript pour programmer le comportement des pages web
JavaScript est un langage de pragramation à part entière. Les programmation de pages Web n’est pas sa seule utilisation. De nombreux programmes et serveur utilisent JavaScript. Node.js est le plus connu. Certaines bases de données, comme MongoDB et CouchDB, utilisent également JavaScript comme langage de programmation. |
Le saviez-vous ?
JavaScript et Java sont des langages totalement différentes. JavaScript a été inventé par Brendan Eich en 1995, et est devenu une norme ECMA en 1997. ECMA-262 est le nom officiel de la norme. ECMAScript est le nom officiel du langage. |
2.1. Travail à faire : Premier script
-
Mieux qu’un long discourt, tester le code suivant :
<!DOCTYPE html>
<html>
<body>
<h1>Mon premier script JavaScript</h1>
<button type="button"
onclick="document.getElementById('demo').innerHTML = 'Bonjour le monde !'">
Clic moi....</button>
<p id="demo"></p>
</body>
</html>
-
Identifier le script et modifier le texte à afficher
-
Comment le script indentie-t-il l’élément html à modifier ?
-
Modifier le script pour changer le titre.
2.2. Outils de développement
Si un simple bloc-note peut suffire pour coder en JavaScript, d’autres alternatives existent et apportent souvent un meilleur confort, en premier lieu, la coloration syntaxique, l’auto-complétion, le formatage du code (gestion des indentations) et la gestion du jeu de caractères (utf-8).
2.2.1. Editeurs payant :
-
Linux/Win/Mac : webstorm (gratuit pour prof et étudiant) https://www.jetbrains.com/webstorm/
-
mac : bbedit (éditeur historique) https://www.barebones.com/products/bbedit/
-
Linux/Win/Mac : sublime text 3 https://www.sublimetext.com
2.2.2. Editeurs gratuits :
-
Linux/Win/Mac : brackets http://brackets.io/
-
Linux/Win/Mac : visual studio https://code.visualstudio.com/
-
Linux/Win/Mac : atom https://atom.io/
-
mac : textmate 2 : https://github.com/textmate/textmate
-
Win : notepad++ https://notepad-plus-plus.org/fr/
2.2.3. Editeurs "rustiques" :
-
Linux/Win/Mac : emacs (Attention, c’est puissant mais déroutant. Il y a 20 ans, je lisais mon mail avec) https://www.gnu.org/software/emacs/
-
Linux/Win/Mac : vim (Attention, c’est déroutant mais puissant) https://www.vim.org/
2.2.4. IDE online https://repl.it/
Pour un premier exercice, nous allons utiliser un outil de développement online https://repl.it/. Repl est une interface de développement web qui permet de coder en ligne.
Cliquer sur le lien afin d’accéder à la page web https://repl.it/. Cliquer ensuite sur + new repl en haut à gauche de la page, sélectionner HTML, CSS, JS. Cliquer sur Create repl.
2.2.5. Documentation
On trouve beaucoup de tutoriels et de cours sur internet concernant le JavaScript.
Parmis les meilleurs, on peut citer :
3. La syntaxe
JavaScript emprunte la plupart des éléments de sa syntaxe à Java, C et C++ mais sa syntaxe est également influencée par Awk, Perl et Python.
|
3.1. Travail à faire : Console JavaScript
-
Dans le navigateur (Mozilla Firefox), ouvrir la Console web (Menu → Outils de développement web → Console web)
-
Saisir et évaluer les expression suivantes :
var uneVariable = 60;
print(uneVariable);
uneVariable = "Maintenant c'est du texte...";
print(uneVariable);
x = "Des chiffres et des lettres : "+ 12;
y = 12 + " : Des chiffres et des lettres";
"37" - 7;
"37"+ 7;
alert("Aïe aïe aïe!")
function carré(nombre) {
return nombre*nombre;
}
carré(5);
3.2. Travail à faire : Agir sur une page
-
Saisir le code suivant dans un fichier html et observer le résultat dans un navigateur (Firefox).
<!DOCTYPE html>
<html>
<head>
<style>
h1 {
font-size: 40px;
}
h2 {
font-size: 30px;
}
p {
font-size: 14px;
}
</style>
</head>
<body>
<h1 id="h1">This is heading 1</h1>
<h2 id="h2">This is heading 2</h2>
<p id="p1">This is a paragraph.</p>
<p id="p2">This is another paragraph.</p>
</body>
</html>
-
Ouvrir la Console web dans cette page
-
Evaluer les expressions suivantes :
document.getElementById("h1").innerHTML = "Bonjour le monde !"
document.getElementById("h1").style.color="red";
-
Modifier le contenu du texte de niveau 2
-
Modifier la couleur du texte du second paragraphe
-
Modifier la couleur de l’arrière plan du premier paragraphe
-
Modifier la couleur de l’arrière plan de la page
3.3. JavaScript DOM HTML
Lorsqu’une page Web est chargée, le navigateur crée le Document Objet Modèle de la page.
3.3.1. Quel est le code HTML DOM?
Le modèle DOM HTML est construit comme un arbre d’objets : Le code HTML DOM est un standard objet modèle et interface de programmation pour HTML. Il définit:
|
En d’autres termes : Le code HTML DOM est une norme pour savoir comment obtenir, modifier, ajouter ou supprimer des éléments HTML.
Avec ce modèle objet, JavaScript obtient toute la puissance dont il a besoin pour :
-
changer tous les éléments HTML dans la page
-
changer tous les attributs HTML dans la page
-
changer tous les styles CSS dans la page
-
supprimer des éléments existants et attributs HTML
-
ajouter de nouveaux éléments et attributs HTML
-
réagir à tous les événements HTML existants dans la page
-
créer de nouveaux événements HTML dans la page
3.3.2. L’interface de programmation DOM
Le code HTML DOM est accessible avec JavaScript (et avec d’autres langages de programmation). Dans les DOM, tous les éléments HTML sont définis comme des objets . L’interface de programmation est les propriétés et méthodes de chaque objet :
|
<html>
<body>
<p id="demo"></p>
<script>
document.getElementById("demo").innerHTML = "Hello World!";
</script>
</body>
</html>
Dans cet exemple :
-
: est un objet qui contient tous les éléments de la page webdocument
-
: est une méthode qui permet d’accéder à l’élément indiqué en paramètre (getElementById()
dans l’exemple)"demo"
-
: est une propriété qui contient le code HTML de l’élément accédé.innerHTML
Trouver des éléments HTML
Voici quelques exemples de la façon dont vous pouvez utiliser l’objet
pour accéder et manipuler le code HTML :document
Methode | Description |
---|---|
|
Trouver un élément par son identifiant |
|
Trouver un élément par son type de balise (tag name) |
|
Trouver un élément par le nom de la classe ( |
-
Trouver des éléments HTML par le nom de balise HTML (Tag)
var x = document.getElementsByTagName("p");
var x = document.getElementById("main");
var y = x.getElementsByTagName("p");
-
Trouver des éléments HTML par le nom de la classe qui leur sont affectés
var x = document.getElementsByClassName("intro");
3.3.3. Travail à faire : Manipuler l’arbre DOM HTML
-
Ajouter dans le code HTML suivant un script qui met en gras et ajoute la balise <blockquote> à la citation d’Albert Einstein :
-
créer une variable
qui contiendra le contenu de l’élément HTML d’idlaCitation
citation
-
Ajouter lui le code HTML
avant et<blockquote><strong>
après</strong></blockquote>
-
affecter le contenu de la variable
à l’élément HTML d’idlaCitation
.citation
-
-
Ajouter dans l’entête du fichier HTML une déclaration interne de style qui met en bleu le texte contenu dans les balises
<blockquote>
<!DOCTYPE html>
<html>
<head>
</head>
<body>
<h2>Une citation</h2>
<div id="citation">
<p>Nous aurons le destin que nous aurons mérité.<p>
<cite>Albert Einstein</cite>
</div>
<script>
// ici le script qui met en gras et ajoute la balise <blockquote> à la citation
</script>
</body>
</html>
3.4. JavaScript DOM CSS
Pour changer le style d’un élément HTML, utilisez la syntaxe suivante : |
<html>
<body>
<h1 id="h1">Hello World!</p>
<script>
document.getElementById("h1").style.color = "blue";
</script>
<p>La couleur du titre a été changée par sun script.</p>
</body>
</html>
3.4.1. Liste des propriétés de style CSS
Toutes les propriétés CSS peuvent être manipulés par JavaScript. Leur nom nest pas toujours identique à celui utilisé par CSS. Ci-dessou, une liste simplifiées des principales propriétés CSS et leur équivalent en JavaScript :
CSS | JavaScript |
---|---|
background |
background |
background-color |
backgroundColor |
background-image |
backgroundImage |
background-position |
backgroundPosition |
background-repeat |
backgroundRepeat |
border |
border |
border-color |
borderColor |
border-width |
borderWidth |
color |
color |
display |
display |
float |
cssFloat |
font |
font |
font-family |
fontFamily |
font-size |
fontSize |
font-weight |
fontWeight |
height |
height |
left |
left |
margin |
margin |
overflow |
overflow |
padding |
padding |
position |
position |
text-align |
textAlign |
text-decoration |
textDecoration |
text-indent |
textIndent |
text-transform |
textTransform |
top |
top |
vertical-align |
verticalAlign |
visibility |
visibility |
width |
width |
3.4.2. Travail à faire : Manipuler l’arbre DOM HTML
-
Compléter le code suivant pour faire afficher le texte ou le faire dispaitre :
<!DOCTYPE html>
<html>
<body>
<p id="p1">Coucou me voilà ... !</p>
<input type="button" value="Hide text"
onclick="document.getElementById(____).____.____='hidden'">
<input type="button" value="Show text"
onclick="document.getElementById(____).____.____='visible'">
</body>
</html>
-
Compléter le code suivant pour changer la couleur de fond de la page lorsque une des cellules du tableau est survolée :
<!DOCTYPE html>
<html>
<head>
</head>
<body>
<h2>Change la couleur de fond !</h2>
<p>Passe la souris sur les les carrés colorés</p>
<table style="width:300px;height:100px">
<tr>
<td style="background-color:Khaki"
onmouseover="document.body.____.____ = this.style.backgroundColor"
onmouseout="document.body.____.____ = 'transparent'"
>
</td>
<td style="background-color:PaleGreen"
onmouseover="document.body.____.____ = this.style.backgroundColor"
onmouseout="document.body.____.____ = 'transparent'"
>
</td>
<td style="background-color:Silver"
onmouseover="document.body.____.____ = this.style.backgroundColor"
onmouseout="document.body.____.____ = 'transparent'"
>
</td>
</tr>
</table>
</body>
</html>
Dans cet exercice, on a pas utilisé une méthode comme |
-
Compléter le code suivant pour ouvrir une fenètre lorsqu’on clic sur le bouton :
<!DOCTYPE html>
<html>
<body>
<p>Cliquez sur le bouton pour ouvrir une nouvelle fenètre</p>
<button onclick="myFunction()">Clic ici !</button>
<script>
function myFunction() {
var w = window.open();
w.document.open();
w.document.write("<h2>Coucou !</h2>");
w.document.close();
}
</script>
</body>
</html>
3.5. JavaScript HTML DOM Les événements
Comme vous avez pu l’expérimenter aux travers des derniers exercices, JavaScript permet de réagir aux événements HTML.
Un JavaScript peut être exécuté lorsqu’un événement se produit, comme lorsqu’un utilisateur clique sur un élément HTML. Pour exécuter du code lorsqu’un utilisateur clique sur un élément, ajoutez le code JavaScript à un attribut d’événement HTML :
Exemples d’événements HTML:
|
<!DOCTYPE html>
<html>
<body>
<h1 onclick="this.innerHTML = 'Ooops!'">Click on this text!</h1>
</body>
</html>
Sachant que l’élément à mofifier est le même que celui sur lequel à lieu l’événement, on n’a pas besoin de le rechercher avec |
3.5.1. Travail à faire : Les événements
-
Téléchargez les images suivantes (clic droit sur l’image → Enregistrer l’image sous…) :
nom du fichier | image |
---|---|
bulboff.gif |
|
bulbon.gif |
-
Complétez le code suivant pour faire afficher une ampoule alumée lorsque la souris est dessus et éteinte lorsque la souris n’est pas dessus :
<!DOCTYPE html>
<html>
<head>
<script>
function lighton() {
...
}
function lightoff() {
...
}
</script>
</head>
<body>
<img id="myimage" ______="lighton()" ______="lightoff()" src="bulboff.gif" width="100" height="180" />
<p>Survol l'ampoule...</p>
</body>
</html>
3.6. Utilisation des formulaires HTML
3.6.1. Les formulaires HTML
-
Un formulaire HTML contient des éléments de formlaire qui sont différents types d’éléments d’entrée, comme les champs de texte, des cases à cocher, des boutons radio, des boutons de soumission, et d’autres encore.
-
Un formulaire commence généralement par la balise
et se termine par la balise<form>
</form>
3.6.2. la balise <form>
La balise HTML <form> définit un formulaire qui est utilisé pour collecter les informations d’utilisateur. Ses attribus définissent :
Exemple
|
La méthode par défaut lors de la soumission des données de formulaire est Toutefois, lorsque
Toujours utiliser POST si les données de formulaire contient des informations sensibles ou personnelles. La méthode POST ne présente pas les données de formulaire soumises dans le champ d’adresse de la page.
|
3.6.3. Entréé de formulaire
L’élément
|
3.6.4. liste déroulante
exemple
|
3.6.5. Zone de texte
|
3.6.6. Les boutons
Exemple
|
3.6.7. L’élément HTML5 <datalist>
Exemple
|
3.6.8. L’élément HTML5 <output>
Exemple
|
3.6.9. Travail à faire : Les formulaires
3.7. traitement d’un formulaire avec JavaSc
3.7.1. Premier exemple
Ci-dessous, un exemple simple de traitement d’un formulaire avec JavaSc :
<script language="javascript">
// Initialisation de variables
var q1 = 0;
var q2 = 0;
// calcul
function calculer () {
score = q1 + q2;
alert("Votre socre est de : " + score + "%")
}
</script>
<hr>
<form>
<p>La capitale de la Suisse est :</p>
<ol>
<li><input type="radio" name="choice" value="1" onClick="q1=0">Genève</li>
<li><input type="radio" name="choice" value="2" onClick="q1=0">Zurich</li>
<li><input type="radio" name="choice" value="3" onClick="q1=50">Berne</li>
</ol>
<p>Le Pô se trouve en :</p>
<ol>
<li><input type="radio" name="choice2" value="1" onClick="q2=50">Italie</li>
<li><input type="radio" name="choice2" value="2" onClick="q2=0">Allemagne</li>
<li><input type="radio" name="choice2" value="3" onClick="q2=0">Espagne</li>
</ol>
<input type="button" name="ProcessButton" value="Voir le résultat!" onClick="calculer()">
</form>
<hr>
|
3.7.2. Deuxième exemple
Dans cet exemple, les code HTML et JavaScript sont strictement séparés.
...
<script language="javascript">
function init () {
document.getElementById("quiz").onsubmit = calculer2;
}
function calculer2() {
// f est un raccourci qui évite de réécrire document.forms["quiz"]
var f = document.forms["quiz"];
// score = 0 au début
var score = 0;
for (var i=0; i < (f.length); i++) {
// On boucle sur tous les éléments du formlaire
// Si l'élément est coché on ajoute sa valeur
if (f.elements[i].checked) {
score = score + parseInt(f.elements[i].value);
}
}
// Afficage du résultat
alert ("Votre score est de : " + score + "%");
}
window.onload = init;
</script>
...
<form id="quiz" action="#" method="get"> <br/>
<p>La capitale de la Suisse est :</p>
<ol>
<li><input type="radio" name="choice" value="0">Genève</li>
<li><input type="radio" name="choice" value="0">Zurich</li>
<li><input type="radio" name="choice" value="50">Berne</li>
</ol>
<p>Le Pô se trouve en :</p>
<ol>
<li><input type="radio" name="choice2" value="50">Italie</li>
<li><input type="radio" name="choice2" value="0">Allemagne</li>
<li><input type="radio" name="choice2" value="0">Espagne</li>
</ol>
<input type="submit" value="Voir le résultat!" />
</form>
|
3.7.3. Travail à faire : Traitement d’un formulaire avec JavaScript
Le but de cet exercice est de compléter les fichiers HTML, CSS et JavaScript pour réaliser une page web contenant un formulaire dont le traitement sera exécuter par un script JavaScript.
-
La page HTML contient un formulaire pour :
-
Saisir le prénom
-
Saisir le noms
-
Sélectionner une classe :
-
1G2
-
1G3
-
1G5
-
-
Sélectionner les deux spécialités que vous garderez en terminale :
-
ARTS PLASTIQUES
-
LITT. ANGLAIS
-
LITT. ESPAGNOL
-
MATHEMATIQUES
-
NUMERIQUE SC.INFORM
-
PHYSIQUE-CHIMIE
-
SC. ECONO.& SOCIALES
-
-
-
Un bouton pour soumettre le formulaire
-
Un élément
<h1 id="resultat">
qui contiendra le résultat du Traitement -
Le fichier CSS contient les éléments de styles pour la mise en forme du HTML
-
Le fichier JavaScript traite le formulaire lors de sa soumission. Il contient :
-
une fonction
init()
, exécutée au chargement de la page. Cette fonction :-
exécute la fonction
resultat()
lors de la soumission du formulaire -
modifie l’élément
id="resultat"
comme suit lors du chargement de la page :-
Si au moins un des deux choix = NUMERIQUE SC.INFORM alors afficher "Bon choix !"
-
Sinon afficher "Mauvais choix !"
-
-
-
une fonction
resultat()
qui :-
Vérifie le remplissage correct du formulaire (Nom et Prénom et Classe et 2 spécialités)
-
Affiche une alerte en conséquence
-
Affiche une alerte correspondant au résultat
-
-
Pour Obtenir le code de l’exercice, vous devez vous connecter avec votre compte GitHub.
Si vous n’avez pas encore de compte GitHub, reportez-vous à l’activité Les bonnes pratiques en informatiques :
4. Aller plus loin…
Il est fortement conseiller de faire les exercices auto-corrigés du site de référence w3school.com :
-
https://www.w3schools.com/js/default.asp : Rappels de cours et tutoriels complets
-
https://www.w3schools.com/js/js_exercises.asp : Exercices auto-corrigés