Cours JavaScript
Cours JavaScript
Programmation en JavaScript
Introduction :
Voici le contenu complet d’un fichier [Link] qui affiche le texte Hello World !.
Pour créer ce programme, if faut :
Dans le fichier appelé [Link], on tape le texte suivant (depuis l’éditeur de texte).
Ensuite en l’ouvrant dans l’explorateur, le programme s’exécute tout seul. Voici le code :
pour découvrir son effet, il suffit de suivre la démarche ci-dessus.
<html>
<body>
<script language="javascript">
[Link]("Hello World!");
</script>
</body>
</html>
La balise <html> ... </html> indique qu’il s’agit d’un document HTML. La
balise <body> ... </body> indique qu’il s’agit du corps du document HTML.
I. Les commentaires :
Lorsqu’on programme, il faut décrire à l’aide de commentaires ce que le programme
fait. Si on laisse de côté du code pendant 6 mois, il est peu probable que l’on se souvienne
exactement de ce qu’on a fait (à quoi correspond ce nom de variable, que fait cette fonction de
30 lignes de codes).
Or, un commentaire est facile à mettre : tout le texte qui suit // n’est pas interprété par
JavaScript.
Or, // ne fonctionne que pour une ligne. Si on veut écrire un commentaire de plusieurs lignes,
on peut aussi utiliser /* pour commencer le commentaire et */ pour le finir. Voici les deux
façons d’écrire un commentaire sur plusieurs lignes.
[Link]("Hello World!") ;
Si on désire écrire guillemets, on doit faire comprendre à JavaScript qu’il s’agit d’un
caractère à afficher et non à interpréter. On utilise pour cela le caractère \.
<html>
<head>
<script language="javascript">
lignes de code
</script>
</head>
Lorsque le code JavaScript doit générer un bout de page web, on doit l’insérer dans le
corps du document HTML.
<html>
<head>
...
</head>
<body>
<script language="javascript">
lignes de code
</script>
</body>
Les deux types de scripts peuvent être mélangés (des bouts de scripts peuvent
être mis dans l’entête et d’autres dans le corps d’une page web).
<html>
<body>
<script src="[Link]"></script>
</body>
</html>
Chapitre II
Les variables
Les variables sont les éléments clés d’un langage de programmation. On conçoit
une variable comme un tiroir contenant une information. La valeur de la variable peut
être appelée à changer. Pour se référer à la variable, on y donne un nom. Les noms de
variables obéissent aux règles usuelles suivantes.
Il faut faire attention aux majuscules et aux minuscules. Par exemple X et x sont deux
noms de variables différents (cette contrainte est générale à toute programmation HTML).
En langage JavaScript, on crée une variable de la même manière que l’on change sa valeur.
Par exemple si x = 5 (il faut penser que dans le tiroir appelé x, il y a la valeur 5), alors
le code suivant va faire en sorte que x = 6 (il faut penser que dans le tiroir appelé x, il y a la
valeur 6).
<html>
<head>
<script language="javascript">
x = 5;
x = x + 1;
</script>
</head>
Les variables déclarées dans une fonction seront détruites après que la fonction se soit
exécutée (il s’agit de variables locales). Les variables déclarées en dehors d’une fonction sont
conservées pour toutes les fonctions de la page web. Ces variables sont détruites
lorsque la page web est fermée.
2. Opérations de comparaison
Une opération de comparaison renvoie la valeur de vérité (true pour vrai et false pour
faux) de la proposition correspondante. L’opération de négation renverse les valeurs de vérité
(vrai devient faux et vice-versa).
2. Demande de confirmation :
3. Alertes :
Voici un script externe qui peut s’avérer très utile pour traquer une majorité d’erreurs.
Il est conseillé d’enregistrer ce script dans un fichier [Link] que l’on peut
appeler par la ligne de code HTML suivante (à insérer avant tout script dans une page
HTML) :
<script src="[Link]"></script>
Chapitre III
Une fonction est un morceau de code qui peut être exécuté lors d’un événement ou
d’un appel. Elles peuvent être définies dans l’entête (de balises <head> ... </head>) afin
d’être utilisées dans le corps (de balises <body> ... </body>) de la page web.
I. Fonctions :
function mafonction(argument1,argument2,...)
{
lignes de code
return sortie; //commande optionnelle
}
Une fonction sans argument doit tout de même comporter des parenthèses.
function mafonction()
{
lignes de code
}
Voici une fonction qui additionne deux nombres et qui renvoie le résultat de l’addition.
function addition(a,b)
{
c=a+b;
return c;
}
function danger()
{
alert("fonction danger exécutée");
}
somme = addition(2,3);
Si la fonction n’a pas d’arguments, on met tout de même les parenthès. Le script
suivant ouvre la fenêtre d’alerte définie dans la fonction danger().
danger();
Dans ce cas, les variables contiennent des nombres. On peut appliquer des fonctions
mathématiques à ces nombres. Les fonctions mathématiques les plus célèbres sont contenues
dans l’extension Math.
Même si ce ne sont pas des fonctions, on trouve aussi les constantes mathématiques.
Math.E [Link]
Cette commande se traduit par si ... si ... sinon. Seul le premier si et sa conséquence
sont nécessaires. Les autres si (else if) ne sont nécessaires que si l’utilisateur en a besoin. Il en
va de même pour le sinon (else).
if (condition1)
{
code qui sera exécuté si la condition1 est vraie
}
else if (condition2) //optionnel
{
code qui sera exécuté si la condition1 est vraie
}
else //optionnel
{
code qui sera exécuté si toutes
les conditions ci-dessus sont fausses
};
Cette commande en une ligne peut s’avérer pratique pour l’utilisateur avancé.
Si la condition est vraie, alors la valeur1 est assignée dans la variable, sinon c’est la valeur2
qui est assignée.
function salutations(visiteur,nom_visiteur)
{
texte=(visiteur=="prof")
? "Cher Monsieur " + nom_visiteur + ","
: "Cher " + nom_visiteur + ",";
return texte;
}
Cette commande, aussi appelée case dans certains langages s’utilise si on veut faire du
cas à cas.
switch (expression)
{
case label1:
code à exécuter si expression = label1
break;
case label2:
code à exécuter si expression = label1
break;
default:
code à exécuter si expression est différente de tous les labels rencontrés
}
Voici une structure de contrôle permettant faire une constatation à propos du jour de
la semaine.
var d = new Date(); //pour la date et l’heure actuelles theDay = [Link](); //pour
extraire le jour
//Dimanche = 0, lundi = 1, samedi = 6
switch(theDay)
{
case 5:
[Link]("c’est vendredi");
break;
case 6:
[Link]("c’est un chouette samedi");
break;
case 0:
[Link]("c’est un dimanche tranquille");
break;
default:
[Link]("vivement ce week-end !");
};
Cette commande doit être utilisée dans une structure de contrôle switch. Elle peut
aussi être utilisée pour sortir d’une boucle (voir plus loin).
Chapitre V
Les boucles
1. La commande while :
While signifie tant que. Ainsi la commande suivante exécute le code tant que
la condition est vraie. Si au départ, la condition est fausse, alors le code n’est pas exécuté.
while (condition)
{
code qui sera exécuter à chaque passage
}
Voici un exemple.
k=1;
while (k<=10)
{[Link]("hahaha ");
k++; // équivalent à k=k+1
};
2. La commande do...while :
Do...while signifie fait...tant que. Ainsi la commande suivante exécute le code une
fois, puis la refait tant que la tant que la condition est vraie. Donc le code va s’exécuté au
moins une fois.
do
{
code qui sera exécuté à chaque passage
}
while (condition);
3. La commande for :
For signifie pour. Cette commande dépend d’une variable que l’on initialise au début
de la commande. Ensuite, tant qu’une certaine condition est vraie, on exécute le code,
puis la variable subit une incrémentation.
for (initialisation; condition; incrémentation)
{
code qui sera exécuté à chaque passage
}
Dans l’exemple suivant, on prend la variable k qu’on initialise à1, puis tant que k ¡
10, on affiche la valeur de k, puis on incrémente la variable k de deux unités.
for (var k=1; k<10; k=k+2)
{
[Link](k);
[Link]("<br>");
};
Les données que l’on peut stocker dans des variables sont de types multiples.
a. Les booleans
Un boolean est une variable contenant une valeur de vérité, il n’y a que deux valeurs
de vérité : vrai ou faux. Les booleans sont principalement utilisés les structures de contrôles.
On peut changer la valeur de vérité en utilisant l’opérateur !
b. Les tableaux
Un tableau est un type de donnée qui peut contenir d’autres types de données. Lors de
la création, la taille du tableau doit être indiquée. En JavaScript, les tableaux sont en fait
des listes (tableaux à une ligne), par contre les types des éléments des tableaux peuvent être
mélangés (chaînes de caractères, nombres, etc.)
Voici un tableau de taille 3. Si rien n’est indiqué, les 3 éléments sont vides
(initialisation automatique).
[Link];
On peut afficher d’un coup le contenu d’un tableau. Par défaut JavaScript
sépare ses éléments par des virgules. Si on désire avoir un autre séparateur, on peut accoler la
commande .join(séparateur).
[Link]([Link]("; "));
On peut trier les tableaux à l’aide de la commande .sort. Deux méthodes de tri sont
possibles : le tri lexicographique et le tri numérique. Le tri lexicographique trie dans l’ordre
alphabétique en commençant par le premier caractère, tandis que le tri numérique (qui ne trie
que les nombres) ordonne les nombres du plus petit au plus grand. La commande sort effectue
le trie lexicographique par défaut. Comme cette commande est très générale, elle permet bien
d’autres possibilités, mais il faut programmer ces méthodes. Voici un programme qui permet
de faire un tri numérique.
// Cette fonction sera utilisée pour le tri numérique function compareNum(a,b) { return
a-b; };
// tableau de nombres
tableau = new Array("1","2","11","70","9","800");
// tri lexicographique
[Link]("Tri lexicographique : " + [Link]());
[Link]("<br>");
[Link] ("Toto");
[Link] ([Link]());
La commande .splice est très puissante, elle permet d’ajouter autant d’entrées que l’on
veut, là où le veut. On peut simultanément supprimer des entrées au même endroit. Cette
fonction renvoie un tableau de taille 0 si on n’a rien supprimé ou un tableau contenant
les éléments enlevés (la taille de ce tableau est égale au nombre d’éléments enlevés).
[Link] (position de l’insertion/suppression, nombre d’éléments supprimes, liste
d’éléments à ajouter);
// creation du tableau
var prenoms = new Array("Steve","Cindy","John");
Il y a bien d’autres commandes pour gérer les tableaux, mais nous ne les verrons pas !
5. Les dates :
On peut définir une date grâce à la commande Date. Attention, tous les paramètres
sont des nombres. Le nombre 0 correspond au mois de janvier ou au dimanche. Ce qui est
entre crochet ci-dessous est optionnel.
Une chaîne de caractères commence toujours par " et se termine par ". Les caractères
spéciaux (tels que les guillemets) s’ajoute grâce à la commande \. On peut concaténer
deux chaînes de texte à l’aide de la commande +.
Il y plein d’autres opérations que l’on peut faire subir à une chaîne de caractères. On
peut obtenir sa longueur.
chaine="Youpie";
[Link];
chaine="Youpie";
//convertion en majuscules avec toUpperCase()
[Link]([Link]());
chaine="Youpie";
[Link]([Link]("pie"));
// renvoie 3 (car p est en quatrième position)
chaine="Youpie";
[Link]([Link]("red"));
chaine="Youpie";
[Link]([Link](taille));
Il y a plein d’autres options pour l’affichage du texte, mais la plupart sont déjà
disponibles avec du code HTML.
Interactivité en JavaScript
Les boutons
<html>
<head>
<script language="javascript">
function reaction()
{ alert("vous venez de presser le bouton"); };
</script>
</head>
<body>
<input type="button"
value="Presse-moi!" onMouseOver="[Link]=’explications’;return true"
onMouseOut="[Link]=’’;return true" onclick="reaction()">
</body>
</html>
Même si les liens HTML fonctionnent, le bouton de la page web ci-dessous permet
d'ouvrir une page Internet. Par ailleurs, la fonction open_win() pourrait faire bien d'autres
choses !
<html>
<head>
<script language="javascript">
function open_win()
{
[Link]("[Link]
};
</script>
</head>
<body>
<input type=button value="Site du lycée" onclick="open_win()">
</body>
</html>
On peut changer d'image lorsque la souris passe sur une image où lorsqu'on clique sur
une image. Pour cela JavaScript utilise la variable [Link] qui n'est pas implémentée
sur les vieux navigateurs.
Voici l'entête du programme (on gère un tableau qui contient des images) :
<html>
<head>
<script language="javascript">
// mémorise les images affichées si la souris est dessus
var onImgArray = new Array()
onImgArray["image1"] = new Image
onImgArray["image1"].src = "[Link]"
onImgArray["image2"] = new Image
onImgArray["image2"].src = "[Link]"
// mémorise les images affichées si la souris n'est plus dessus
var offImgArray = new Array()
offImgArray["image1"] = new Image
offImgArray["image1"].src = "[Link]"
offImgArray["image2"] = new Image
offImgArray["image2"].src = "[Link]"
// fonctions qui change les images
function imageOn(imgName)
{ [Link][imgName].src = onImgArray[imgName].src }
function imageOff(imgName)
{ [Link][imgName].src = offImgArray[imgName].src }
// fonction pour régler le message dans la barre de statut
function setMsg(msg) { [Link] = msg; return true; }
// fonctions activées en cliquant sur les images
function action1()
{ [Link]["image2"].height = 500
[Link]["image2"].src = "[Link]" }
function action2() { }
</script>
</head>
Voici le corps du programme (on y trouve l'utilisation de code HTML et de la variable
[Link]). La commande name dans la balise <img> ... </img> est capitale !
<body>
<center>
<A HREF="javascript:action1()"
onMouseOver="imageOn('image1'); return setMsg('on image1')"
onMouseOut="imageOff('image1'); return setMsg('off image1')">
<img src="[Link]" name="image1">
</A>
<A HREF="javascript:action2()"
onMouseOver="imageOn('image2'); return setMsg('on image2')"
onMouseOut="imageOff('image2'); return setMsg('off image2')">
<img src="[Link]" name="image2" height=202 width=202>
</A>
</center>
</body>
</html>
On peut remarquer que si la taille de l'image (height (pour la hauteur) et width (pour la
largeur)) n'est pas précisée, alors c'est la taille de l'image qui l'emporte, ce qui va changer la
mise en page de la page web : cela peut être un effet désiré par le créateur de la page.
On remarque l'emploi des balises HTML qui permettent de créer des hyperliens (balise
<A> ... </A>) et d'insérer des images (balise <IMG> ... </IMG>). Il est important que le nom
de l'image (name="imageX") corresponde µa l'indice passé en paramètre du tableau
[Link] (on remarque par ailleurs qu'il est possible que les indices ne soient pas des
nombres, mais des chaînes de caractères).
On peut aussi changer la taille d'une image (pourrez-vous expliquer l'effet étrange ?).
<html>
<head>
<script language="javascript">
function setHeight(ImgName,a,b)
{ [Link][ImgName].height=a
[Link][ImgName].width=b }
</script>
</head>
<body>
<img src="[Link]" name="image1" width="202" height="202"
onMouseOver="setHeight('image1',202,101)"
onMouseOut ="setHeight('image1',101,202)">
</body>
</html>
Chapitre VII
Les formulaires
Un exemple de formulaire sans JavaScript.
Même si la page web n'est pas hébergée sur un serveur, on peut recevoir les réponses
sur son email (sans utiliser JavaScript).
Au verso de cette page se trouve un prototype de formulaire n'utilisant pas JavaScript, mais
permettant d'obtenir un feed-back de la part d'un utilisateur.
Sur la page suivante, on trouve un tel exemple de code HTML pur (c'est-à-dire sans
JavaScript).
<HTML>
<HEAD>
<TITLE>Evaluation du cours de Mathématiques</TITLE>
</HEAD>
<BODY bgcolor="#DDAAFF">
<CENTER>
<H1>Evaluation du cours de Mathématiques</H1>
Ce questionnaire permettra vous permettre de signaler vos besoins en cochant les cases
correspondantes. Profiter de l'espace consacré aux remarques et commentaires pour
donner votre opinion personnelle.
</CENTER>
<form action="[Link] method="POST"
enctype="text/plain">
<HR>
<H3>Concernant les objectifs du cours de Mathématiques</H3>
<TABLE cols=2 cellpadding=5>
<TR> <TD width=250> <H3>
1. Les principes de l'algèbre
</H3> </TD> </TR>
<TR> <TD> <H4>
1.1 Notions de base
</H4> </TD> </TR>
<TR>
<TD>
- Les ensembles de nombres
</TD>
<TD>
<TABLE border cols=2 align=center>
<TR align=center>
<TD width=200> Besoin d'explications </TD>
<TD width=200> Besoin d'exercices </TD>
</TR>
<TR align=center>
<TD> <input name="Les ensembles de nombres" type=Checkbox value=" besoin
d'explications"> </TD>
<TD> <input name="Les ensembles de nombres" type=Checkbox value=" besoin
d'exercices"> </TD>
</TR>
</TABLE>
</TD>
</TR>
</TABLE>
<HR>
<H3> Remarques et commentaires </H3>
<TEXTAREA name="Commentaires" rows=10 cols=74 wrap=Physical></TEXTAREA>
<BR> <BR>
<HR>
<BR>
<CENTER>
<INPUT type=Submit value="Envoi du formulaire">
<INPUT type=Reset value="Tout recommencer">
</CENTER>
</FORM>
</BODY>
</HTML>
Annexes et références
Problèmes possibles avec les vieux navigateurs internet. Si le code JavaScript s'affiche
à l'écran. Pour les plus vieux navigateurs, il a un risque que le code JavaScript soit affiché à
l'écran, il faut donc indiquer au langage HTML qu'il s'agit d'un commentaire.
<script language="javascript">
<!--
lignes de code
//-->
</script>
Remarquons au passage que les // signalent un commentaire pour JavaScript. Malgré
tout la première ligne ne s'écrit pas //<!--, c'est bizarre, mais c'est comme »ca.
<script language="javascript">
if ([Link])
{
code qui sera exécuté si tout va bien
}
else
{
code qui sera exécuté si [Link] n'est pas reconnu
}
</script>
Si [Link] n'existe pas, la condition ([Link]) renvoie undefined ce
qui est traité par un if comme false.