0% ont trouvé ce document utile (0 vote)
15 vues87 pages

Introduction au langage Javascript

Ce document est un guide complet sur le langage JavaScript, couvrant des sujets allant des généralités et spécificités du langage aux structures de données, fonctions, et objets. Il inclut également des sections sur les événements, les formulaires, et les objets du navigateur, ainsi que des exercices pratiques pour renforcer l'apprentissage. Chaque chapitre aborde des aspects techniques et pratiques, facilitant la compréhension et l'application de JavaScript.

Transféré par

adikoeliane92
Copyright
© All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
15 vues87 pages

Introduction au langage Javascript

Ce document est un guide complet sur le langage JavaScript, couvrant des sujets allant des généralités et spécificités du langage aux structures de données, fonctions, et objets. Il inclut également des sections sur les événements, les formulaires, et les objets du navigateur, ainsi que des exercices pratiques pour renforcer l'apprentissage. Chaque chapitre aborde des aspects techniques et pratiques, facilitant la compréhension et l'application de JavaScript.

Transféré par

adikoeliane92
Copyright
© All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

JAVASCRIPT

1
SOMMAIRE

[Link] ...................................................................................................................... 8
[Link] langage Javascript ........................................................................................................ 8
1.2.Côté pratique ..................................................................................................................... 8
1.3.Détails techniques ............................................................................................................. 8
[Link] LANGAGE ........................................................................................................................ 8
[Link] du code ....................................................................................................... 8
[Link]écificités du langage ..................................................................................................... 9
[Link] STRUCTURES DE DONNEES ..................................................................................... 9
[Link] données constantes ..................................................................................................... 9
[Link] variables en JS .......................................................................................................... 10
[Link] types de variable ................................................................................................ 10
[Link] déclaration et l’affectation ................................................................................... 10
3.2.3. Les noms réservés .................................................................................................... 11
[Link] sur les chaînes de caractères ............................................................. 11
[Link] globales et variables locales ..................................................................... 12
4. LES OPERATEURS ............................................................................................................ 12
[Link] opérateurs de calcul .................................................................................................. 12
[Link] opérateurs de comparaison ....................................................................................... 12
[Link] opérateurs associatifs ............................................................................................... 13
[Link] opérateurs logiques................................................................................................... 13
[Link] opérateurs d'incrémentation ..................................................................................... 13
5. LES FONCTIONS ............................................................................................................... 14
5.1.Définition ........................................................................................................................ 14
5.2.Déclaration ...................................................................................................................... 14
[Link] fonctions dans l’en-tête ............................................................................................ 14
5.4.L'appel d'une fonction ..................................................................................................... 14
[Link] manipulant des valeurs ................................................................................... 14
[Link] une valeur à une fonction .............................................................................. 14
[Link] une valeur ................................................................................................ 15
[Link] locales et variables globales ........................................................................... 15
6. LES STRUCTURES DE CONTROLE................................................................................ 16
[Link] structures algorithmiques ......................................................................................... 16
[Link] structure séquentielle ................................................................................................. 16
[Link] instructions conditionnelles ...................................................................................... 16
6.3.1.L’expression if … else ................................................................................................. 16
6.3.2.L’expression () ? : ........................................................................................................ 17
[Link] instructions itératives ............................................................................................... 17
6.4.1.L’itération for ........................................................................................................... 17
6.4.2.L’itération while ....................................................................................................... 18
[Link] une boucle ................................................................................................... 18
6.5.1.L’instruction break ................................................................................................... 18
6.5.2.L’instruction continue............................................................................................... 18
[Link]........................................................................................................................... 19
7. LES BOITES DE MESSAGE .............................................................................................. 19
7.1.Généralités ...................................................................................................................... 19
[Link]() .............................................................................................................................. 19
[Link]() .......................................................................................................................... 19
[Link]() ........................................................................................................................ 20
[Link] : Confirmation et vérification........................................................................... 20
8. NOTION OBJET.................................................................................................................. 20
[Link] concept objet .............................................................................................................. 20

2
[Link]éation d’un objet ......................................................................................................... 21
[Link]ès aux propriétés et aux méthodes ............................................................................ 21
8.4.L’objet this ...................................................................................................................... 21
9. LES FORMULAIRES.......................................................................................................... 21
9.1.Généralités ...................................................................................................................... 21
[Link]ésentation .............................................................................................................. 21
[Link] balise form ........................................................................................................... 22
9.2. Champ de texte .............................................................................................................. 22
[Link] de texte ........................................................................................................... 22
[Link] de texte ............................................................................................................ 23
[Link] password....................................................................................................... 23
[Link] à sélectionner ........................................................................................................ 24
[Link] radios .......................................................................................................... 24
[Link] .................................................................................................................. 25
[Link] de sélection............................................................................................................. 25
[Link] ............................................................................................................................. 26
[Link] simple ........................................................................................................... 26
[Link] reset .............................................................................................................. 27
[Link] submit........................................................................................................... 27
[Link]ôle caché ................................................................................................................ 28
[Link] formulaire complet .................................................................................................... 28
[Link] objet du formulaire ................................................................................................... 29
[Link]........................................................................................................................... 30
10. LES EVENEMENTS ...................................................................................................... 30
10.1.Généralités .................................................................................................................... 30
[Link]ésentation ............................................................................................................ 30
[Link] ...................................................................................................... 30
[Link] clic de souris ............................................................................................................ 31
[Link] chargement ............................................................................................................... 31
[Link] ........................................................................................................................ 31
[Link] ................................................................................................................... 32
[Link] ........................................................................................................................ 32
[Link] ....................................................................................................................... 32
[Link] passage de la souris .................................................................................................. 32
[Link] ............................................................................................................. 32
[Link] ............................................................................................................... 33
[Link] focus ......................................................................................................................... 33
[Link] ....................................................................................................................... 33
[Link] ......................................................................................................................... 33
[Link] changements ........................................................................................................... 34
[Link] sélection ................................................................................................................... 34
10.8.L’envoi .......................................................................................................................... 34
[Link] reset .......................................................................................................................... 35
10.10.L’utilisation de l’objet document ................................................................................ 35
[Link] concret.......................................................................................................... 35
[Link]....................................................................................................................... 36
[Link] bouton .............................................................................................................. 36
[Link] phrase............................................................................................................... 36
11. L’OBJET ARRAY ............................................................................................................. 36
11.1.Généralités .................................................................................................................... 36
[Link]éation et affectation d’un tableau .............................................................................. 37
11.2.1 Création d’un tableau.............................................................................................. 37
11.2.2 Affectation d’un tableau ......................................................................................... 37

3
[Link]ès aux données d’un tableau ................................................................................... 37
[Link] à 2 dimensions ................................................................................................. 38
[Link]étés et méthodes .................................................................................................. 38
[Link]été.................................................................................................................. 38
11.5.2.Méthodes ................................................................................................................ 39
[Link] concret............................................................................................................ 39
[Link]......................................................................................................................... 40
[Link] OBJETS DU NAVIGATEUR..................................................................................... 40
12.1.Généralités .................................................................................................................... 40
[Link]................................................................................................................. 40
13.L’OBJET NAVIGATOR .................................................................................................... 41
[Link] propriétés de navigator ........................................................................................... 41
[Link] méthodes de navigator............................................................................................ 42
[Link] objets de navigator ................................................................................................. 42
[Link] ........................................................................................................................ 42
14.L’OBJET WINDOW........................................................................................................... 43
[Link] propriétés de window ............................................................................................. 43
[Link] méthodes de window .............................................................................................. 43
14.2.1.Généralités .............................................................................................................. 43
[Link] des méthodes.................................................................................................. 44
[Link] ................................................................................................................ 44
[Link] évènements de window .......................................................................................... 46
[Link] objets de window.................................................................................................... 47
14.4.1.L’objet frames......................................................................................................... 47
14.4.2.L’objet parent ......................................................................................................... 47
14.4.3.L’objet top .............................................................................................................. 47
14.4.4.L’objet opener......................................................................................................... 47
14.4.5.L’objet history ........................................................................................................ 48
14.4.6.L’objet location....................................................................................................... 48
14.4.7.L’objet screen ......................................................................................................... 48
14.4.8.L’objet event ........................................................................................................... 49
14.4.9.L’objet external....................................................................................................... 49
[Link] concret............................................................................................................ 49
[Link]......................................................................................................................... 49
15.L’OBJET DOCUMENT ..................................................................................................... 50
[Link] propriétés de document .......................................................................................... 50
[Link] méthodes de document ........................................................................................... 51
[Link] évènements de document ....................................................................................... 52
[Link] objets de document ................................................................................................. 52
15.4.1.L’objet all ............................................................................................................... 52
15.4.2.L’objet layers .......................................................................................................... 52
15.4.3.L’objet forms .......................................................................................................... 52
15.4.4.L’objet anchors ....................................................................................................... 53
15.4.5.L’objet images ........................................................................................................ 53
15.4.6.L’objet applets ........................................................................................................ 53
15.4.7.L’objet plugins ........................................................................................................ 53
15.4.8.L’objet frames......................................................................................................... 53
[Link]......................................................................................................................... 53
[Link] OBJET DU NOYAU JAVASCRIPT .......................................................................... 54
16.1.Généralités .................................................................................................................... 54
[Link] précisions ...................................................................................................... 54
17.L’OBJET MATH ................................................................................................................ 54
[Link] ....................................................................................................................... 54

4
[Link] diverses .................................................................................................. 54
[Link] trigonométriques .................................................................................... 54
[Link] logarithmiques ....................................................................................... 55
[Link] ..................................................................................................................... 55
[Link] ................................................................................................................ 55
[Link]......................................................................................................................... 55
18.L’OBJET STRING .............................................................................................................. 55
18.1.Généralités .................................................................................................................... 55
[Link] propriété ................................................................................................................... 55
[Link] méthodes ................................................................................................................ 56
[Link] () ................................................................................................................. 56
[Link] () .................................................................................................... 56
[Link] () ........................................................................................................ 56
[Link] () ............................................................................................................... 57
[Link] () ........................................................................................................ 57
[Link] () ............................................................................................................. 57
[Link] () .................................................................................................................. 57
[Link] ()..................................................................................................................... 58
[Link] () ..................................................................................................................... 58
[Link] () ............................................................................................................... 58
[Link] () .................................................................................................... 59
[Link] () .................................................................................................... 59
[Link] () .......................................................................................................... 59
[Link] () ............................................................................................................ 59
[Link] () ................................................................................................................. 60
[Link] () ................................................................................................................... 60
[Link] () ................................................................................................................. 60
[Link] () .................................................................................................................... 60
[Link] () ..................................................................................................................... 60
[Link] () .................................................................................................................... 61
[Link] () .................................................................................................................. 61
[Link] () ................................................................................................................. 61
[Link] () ................................................................................................................. 62
[Link] () ................................................................................................................... 62
[Link] ()............................................................................................................... 62
[Link] sur les chaînes ....................................................................................... 62
[Link] .............................................................................................................. 62
[Link]énation ......................................................................................................... 63
[Link]ères spéciaux ................................................................................................ 63
[Link]......................................................................................................................... 64
19.L’OBJET DATE ................................................................................................................. 65
19.1.Généralités .................................................................................................................... 65
[Link] méthodes ................................................................................................................ 65
[Link] .......................................................................................................................... 65
[Link] ........................................................................................................................... 65
19.2.3.L’heure.................................................................................................................... 66
[Link] concret............................................................................................................ 66
[Link]......................................................................................................................... 67
[Link] de jours ..................................................................................................... 67
[Link] GMT............................................................................................................. 67
20.L’OBJET IMAGE ............................................................................................................... 67
[Link] HTML ............................................................................................................... 67
20.2.L’objet ........................................................................................................................... 67

5
[Link] propriétés ................................................................................................................ 68
[Link] ................................................................................................................... 68
[Link] ........................................................................................................................... 68
[Link] ....................................................................................................................... 68
[Link] ............................................................................................................................. 68
[Link] ...................................................................................................................... 68
[Link] ..................................................................................................................... 69
[Link] ................................................................................................................. 69
[Link] ........................................................................................................................... 69
[Link] ................................................................................................................... 69
[Link] une image ....................................................................................................... 69
[Link] concret : cliquer pour changer d’image ......................................................... 70
[Link]......................................................................................................................... 71
[Link] PROGRAMMATION MULTI-CADRES .................................................................... 71
[Link] HTML ............................................................................................................... 71
21.2.Généralités .................................................................................................................... 71
[Link] hypertexte ............................................................................................................ 72
[Link]ès aux éléments des frames..................................................................................... 72
21.4.1.L’objet frames[] ...................................................................................................... 72
[Link] nom de la frame ................................................................................................. 72
[Link] concret............................................................................................................ 73
[Link]......................................................................................................................... 74
[Link] COOKIES ................................................................................................................... 74
[Link]ésentation ................................................................................................................... 74
[Link]éer un cookie ............................................................................................................. 75
22.3.Récupérer un cookie ..................................................................................................... 76
[Link] un cookie ........................................................................................................ 77
[Link] un cookie ..................................................................................................... 77
[Link] PROGRAMMATION OBJET ...................................................................................... 77
[Link]ésentation ................................................................................................................... 77
23.2.Déclaration d’une classe ............................................................................................... 77
[Link] de méthodes................................................................................................. 78
23.4. Exercice........................................................................................................................ 78
[Link] EXPRESSION REGULIERES ................................................................................... 79
[Link]ésentation ................................................................................................................... 79
24.2.Définition ...................................................................................................................... 79
[Link]ètres d’une expression régulière ......................................................................... 79
24.3.1.L’option .................................................................................................................. 79
[Link] pattern ................................................................................................................ 80
[Link] ................................................................................................................ 81
[Link] d’une expression régulière .......................................................................... 81
[Link] méthode de l’objet RegExp.............................................................................. 81
[Link] méthode de l’objet String ................................................................................. 82
[Link] concret ........................................................................................................ 83
[Link]......................................................................................................................... 84
[Link]ésentation ................................................................................................................... 84
[Link] fonctions du langage .............................................................................................. 84
[Link]() .................................................................................................................. 84
[Link]() .............................................................................................................. 84
[Link] () ............................................................................................................ 84
[Link] () ............................................................................................................... 85
[Link] () ................................................................................................................ 85
[Link] () .................................................................................................................. 85

6
25.3.Méthodes et propriétés des objets ................................................................................. 86
[Link] ................................................................................................................. 86
[Link] ............................................................................................................. 86
[Link]() ................................................................................................................ 87
[Link]() ............................................................................................................... 87

7
[Link]

[Link] langage Javascript

Le langage Javascript a été mis au point par Netscape en 1995. Microsoft ayant sorti
son propre langage quelques temps après, un standard a été créé, le Javascript. Actuellement,
la version du langage est le Javascript 1.5.

Ce langage est interprété, c’est-à-dire qu’il n’est pas compilé en langage machine
avant exécution, comme le Java ou le C++. Le Javascript est intégré au code HTML, il vous
faudra donc des bases assez solides en HTML. Si ce n’est pas le cas, il est conseillé de
consulter un cours HTML de toute urgence. Il s’agit, a priori, du premier langage de script
créé pour le web. Il permet d’exécuter des commandes du côté utilisateur, donc au niveau du
navigateur et non du serveur comme le PHP.

Son principal inconvénient est le fait qu’il ne dispose pas de débogueur, la détection
des erreurs en devient fastidieuse. Ensuite, il le code est accessible, puisque contenu dans la
page envoyée au navigateur.

1.2.Côté pratique

Pour programmer en Javascript, il vous faut un navigateur web assez récent et un


éditeur de texte, le bloc-notes de Windows est suffisant. Une connexion Internet est
souhaitable. Au niveau de l’éditeur de texte, je vous conseillerais un éditeur un peu plus
évolué. Le mieux serait bien entendu Dreamweaver MX1, si vous avez les moyens, bien que
ce soit surtout utile si vous faites un site web. Du côté des éditeurs gratuits, je conseillerai
Editplus22, un éditeur tous langages qui propose une coloration syntaxique. Si vous devez
prendre un autre éditeur, veillez à ce qu’il propose cette coloration syntaxique, ça éclaire le
code.

1.3.Détails techniques

Par convention, l’abréviation JS, utilisée souvent tout au long de ce cours, désigne
Javascript.
Chaque chapitre concerne un point du langage qui peut être pris comme une leçon. A
chaque fin de chapitre, je présente un exemple concret – quand c’est possible – et un ou
plusieurs exercice(s). Ces exercices sont corrigés – un lien mène au fichier HTML – dans le
dossier « solutions ».
Les cases blanches correspondent à la syntaxe, c’est-à-dire la mise en forme du
langage. Les cases grises correspondent aux exemples. Lorsque ces derniers ont un résultat
graphique, un lien mène au fichier HTML de l’exemple. Ces derniers sont dans le dossier
« Exemples »

[Link] LANGAGE

[Link] du code

Comme son nom l’indique, il s’agit d’un langage de script. Le code s’intègre donc
dans la page HTML avec les balises <script>. Il existe deux façons d’intégrer votre code. La
première consiste à le placer entre les balises, tout simplement.

8
Syntaxe :
<script language = "Javascript">code</script>

Exemple 2.1 :
<script language = "Javascript">
var mavariable = 12 ;
[Link] (typeof(mavariable)) ;
</script>

Il est aussi possible de placer votre code dans un fichier Javascript, comportant
l’extension « .js ». Ensuite, il faut l’insérer dans la page HTML ave la balise <script>. Ne pas
oublier il est préférable de placer le fichier JS dans le même dossier que la page.

Syntaxe :
<script src = "chemin_fichier"></script>

Exemple 2.2 :
<script src = "[Link]">
</script>

[Link]écificités du langage

La première chose qu’il faut noter en Javascript, comme dans le C, est que chaque
instruction se termine par un point-virgule ‘;’. Il est possible de mettre plusieurs instructions
sur la même ligne, puisque l’interpréteur ignore les sauts de lignes. Vous pouvez aussi insérer
des blancs où vous voulez – excepté dans des noms de variables ou dans des expressions –
cela ne change pas le code.

Exemple 2.3 :
var mavariable = 12 ;
[Link] ( typeof(mavariable) ) ;

Il est utile de commenter son code. Cela se fait à l’aide de ‘//’, tout le texte suivant le
double slash jusqu’à la fin de la ligne est ignoré par l’interpréteur.

Exemple 2.4 :
var mavariable = 12 ; //commentaire
[Link] ( typeof(mavariable) ) ;

Il est aussi possible de mettre des commentaires au milieu d’un ligne, ou sur plusieurs
lignes, en les encadrant avec « /* » et « */ »

Exemple 2.5 :
var mavariable = 12 ; /*commentaire sur
plusieurs lignes*/
[Link] ( typeof(mavariable) ) ;

[Link] STRUCTURES DE DONNEES

[Link] données constantes

Le JS fournit quatre types de constantes déjà définies :

9
• Les constantes numériques, en notation décimale ( 75,2 ) ou flottante, c’est-à-dire
scientifique (752E-1).
• Les constantes booléennes : true et false.
• Les chaînes de caractères, encadrées de guillemets ou de d’apostrophes (‘’).
• La constante null qui ne signifie « rien », « sans valeur », et qui est attribuée aux
variables non définies.

[Link] variables en JS

[Link] types de variable

Un nom de variable doit commencer par une lettre (alphabet ASCII) ou le signe « _ »
et se composer de lettres, de chiffres et des caractères « _ » et « $ » (à l'exclusion du blanc).
Le nombre de caractères n'est pas précisé. Javascript est sensible à la casse (majuscules et
minuscules). Cela signifie que « MaVariable » n’est pas équivalent à « mavariable ».

Il existe 5 types de variables en Javascript :


• Les nombres : number
• Les chaînes de caractères : string
• Les booléens3 : boolean
• Les objets : object
• Les fonctions : function

Nous verrons les fonctions au chapitre [Link] FONCTION, mais je vous présente la
première que vous verrez : la fonction typeof(), qui retourne le type d’une variable.

Exemple 3.1 :
var mavariable = 12 ;
[Link] (typeof(mavariable)) ;

Si la variable n’est pas affectée d’une valeur, elle recevra alors le type undefined,
comme le montre l’exemple 3.2.

Exemple 3.2 :

[Link] (typeof(mavariable)) ;

[Link] déclaration et l’affectation

On distinguera ici la déclaration et l’affectation. La première consiste à donner un


nom à la variable alors que la seconde consiste à donner une valeur à la variable. La
différence est qu’une variable peut être affectée d’une valeur plusieurs fois alors qu’elle ne
peut être définie qu’une seule fois. L’exemple suivant illustre une définition sans affectation.

Exemple 3.3 :

var Numero;

Dans les exemples qui suivent, par facilité, j’ai regroupé l’affectation avec la
déclaration. Les variables peuvent être déclarées de deux façons :
• De façon explicite, avec le mot-clé « var ».

10
Exemple 3.4 :

var Numero = 1 ;

• De façon implicite. On écrit directement le nom de la variable suivi de la valeur que


l'on lui attribue.

Exemple 3.5 :

Numero = 1 ;

3.2.3. Les noms réservés

Les mots de la liste ci-après ne peuvent être utilisés pour des noms de fonctions et de
variables. Certains de ces mots sont des mots clés Javascript, d'autres ont été réservés par
Netscape pour un futur usage éventuel.

Lettre Mot-clé
A abstract
B boolean / break / byte
C case / catch / char / class / const / continue
D default / do / double
E else / extends
F false / final / finally / float / for / function
G goto
I if / implements / import / in / instanceof / int / interface
L long
N native / new / null
P package / private / protected / public
R return
S short / static / super / switch / synchronized
T this / throw / throws / transient / true / try
V var / void
W while / with
Tab. 3.1 : Noms réservés
[Link] sur les chaînes de caractères

Javascript convertit automatiquement les entiers en chaîne de caractères. Pour les


puristes, il s’agit du transtypage automatique. Il est ainsi possible de concaténer des entiers
avec des chaînes de caractères.

11
Dans la fonction d’écriture dans le document courant ( [Link]() ), les données
peuvent être séparés par des ‘,’ ou des ‘+’.

Certains caractères peuvent être insérés dans les chaînes de caractères : le retour
arrière (\b), le saut de page (\f), le saut de ligne (\n), l’entrée (\r), la tabulation (&) et
l’apostrophe (\’).

On peut insérer des codes HTML dans les chaînes de caractères. Ces dernières seront
interprétées comme de vraies balises.

Nous reverrons tout cela plus en détail dans le chapitre 16.L’OBJET STRING.

[Link] globales et variables locales

Les variables déclarées tout au début du script, en dehors et avant toutes fonctions
(voir plus loin), seront toujours globales, qu'elles soient déclarées avec var ou de façon
contextuelle. On pourra donc les exploiter partout dans le script.
Dans une fonction, une variable déclarée par le mot clé var aura une portée limitée à
cette seule fonction. On ne pourra donc pas l'exploiter ailleurs dans le script. D'où son nom de
locale. Cependant, toujours dans une fonction, si la variable est déclarée contextuellement
(sans utiliser le mot var), sa portée sera globale.

4. LES OPERATEURS

Comme tout langage informatique, JS possède des opérateurs pour effectuer les
calculs. Leur présentation est rapide, surtout pour les plus simples. Dans les exemples, la
valeur initiale de x sera toujours égale à 11, et celle de y sera égale à 5.

[Link] opérateurs de calcul

Signe Nom Signification Exemple Résultat


+ Plus Addition x+3 14
- moins soustraction x-3 8
multiplié
* multiplication x*2 22
par
/ divisé par division x/2 5.5
reste de la division
% modulo x%5 1
par
= affectation a la valeur x=5 5
Tab 4.1 : opérateurs de calcul

[Link] opérateurs de comparaison

Signe Nom Exemple Résultat


== Egal x == 11 true

12
Signe Nom Exemple Résultat
< Inférieur x < 11 false
<= Inférieur ou égal x <= 11 true
> Supérieur x > 11 false
>= Supérieur ou égal x >= 11 true
!= Différent x != 11 false
Tab 4.2 : opérateurs de comparaison

Ces opérateurs seront utilisés dans les boucles conditionnelles4. Le résultat s’exprime
alors en valeur booléenne.

[Link] opérateurs associatifs

Signe Description Exemple Signification Résultat


+= plus égal x += y x=x+y 16
-= moins égal x -= y x=x-y 6
*= multiplié égal x *= y x=x*y 55
/= divisé égal x /= y x=x/y 2.2
Tab 4.3 : opérateurs associatifs

Ces opérateurs permettent un raccourci d’écriture, sans pour autant changer le résultat.
Ils permettent une incrémentation ou une décrémentation autre que 1.

[Link] opérateurs logiques

Signe Nom Exemple Signification


&& et (condition1) && (condition2) condition1 et condition2
|| ou (condition1) || (condition2) condition1 ou condition2
Tab 4.4 : opérateurs logiques

On utilisera ces opérateurs dans les boucles conditionnelles principalement. Chaque


condition correspondant à une expression avec un opérateur de comparaison. Ces opérateurs
fonctionnent comme un ET logique et un OU logique.

[Link] opérateurs d'incrémentation

Signe Description Exemple Signification Résultat


x++ incrémentation y = x++ y =x+1 6
x-- décrémentation y= x-- y =x-1 4
Tab 4.5 : opérateurs d’incrémentation

13
5. LES FONCTIONS

5.1.Définition

C’est un groupe d’instruction prédéfini et exécuté lorsqu’il est appelé et que l’on peut
appeler plusieurs fois.

En Javascript, il existe deux types de fonctions :


• Les fonctions propres à Javascript, appelées méthodes. Elles sont associées à un objet
en particulier.
• Les fonctions que vous définissez vous-même. Ce sont celles qui nous intéressent ici.

5.2.Déclaration

Pour déclarer ou définir une fonction, on utilise le mot-clé function.


La syntaxe d'une déclaration de fonction est la suivante :

Syntaxe :
function nom_de_la_fonction (arguments) {
code des instructions
}

Le nom d’une fonction suit les mêmes règles que celui d’une variable5. Chaque nom
de fonction doit être unique dans un même script. Les parenthèses sont obligatoires même s’il
n’y a pas d’arguments, puisque Javascript reconnaît une fonction grâce à elles.

[Link] fonctions dans l’en-tête

Il est plus prudent de placer les déclarations de fonctions dans l’en-tête


<head>…</head> pour qu ‘elles soient prises en compte par l’interpréteur avant leur
exécution dans le corps de la page <body>…</body>

5.4.L'appel d'une fonction

Syntaxe :
nom_de_la_fonction();

Il faut que la fonction aie été définie avant l’appel, étant donné que l’interpréteur lit le
script de haut en bas.
[Link] manipulant des valeurs

[Link] une valeur à une fonction

On peut passer des valeurs à une fonction. On parle alors de paramètres. Pour passer
un paramètre à une fonction, on fournit un nom d'une variable dans la déclaration de la
fonction.

Exemple 5.1 : une fonction affichant le texte dans la page à laquelle on fournit le texte à
afficher.

.
14
function Exemple(texte) { //définition avec un paramètre
[Link](texte);
}
Exemple("Salut à tous"); // appel avec un paramètre

On peut passer plusieurs paramètres à une fonction, en séparant les paramètres par des
virgules.

Syntaxe :
function nom_de_la_fonction(arg1, arg2, arg3) {
instructions
}

Exemple 5.2 :

function cube(nombre) {
y = nombre*nombre*nombre;
return y; //retour de valeur
}
x = cube(5); //appel avec paramètre
[Link](x); //résultat

[Link] une valeur

Une fonction peut retourner une valeur. Il suffit alors de placer le mot-clé return suivi
de la valeur ou de la variable à retourner.

Exemple 5.3 :

function cube(nombre) { //Définition de la fonction


var c = nombre*nombre*nombre ;
return c; //Retour du cube du paramètre
}
var x = cube(5) ; // appel avec paramètre
[Link] (x) ; //affichage

NB : Le mot-clé return est facultatif.

[Link] locales et variables globales

Une variable déclarée dans une fonction par le mot-clé var aura une portée limitée à
cette seule fonction. On l'appelle donc variable locale et ne pourra être utilisé dans le reste du
script.

Exemple 5.4 :
function cube(nombre) {
var c = nombre*nombre*nombre ;
}

Si la variable est déclarée sans utiliser le mot var, sa portée sera globale.

15
Exemple 5.5 :

function cube(nombre) {
cube = nombre*nombre*nombre ;
}

Les variables déclarées tout au début du script, en dehors et avant toutes fonctions,
seront toujours globales, qu'elles soient déclarées avec var ou de façon contextuelle.

Exemple 5.6 :
var cube=1
function cube(nombre) {
var cube = nombre*nombre*nombre ;
}

6. LES STRUCTURES DE CONTROLE

[Link] structures algorithmiques

Quel que soit le langage informatique utilisé6, un programme informatique utilise 3


catégories principales d’instructions. Ce sont :
• Les instructions séquentielles.
• Les instructions alternatives, ou conditionnelles.
• Les instructions itératives, ou répétitives.

Nous verrons chacun des types de structures, en comparant l’algorithme et le code JS.
[Link] structure séquentielle

C’est une suite d’instructions exécutées dans l’ordre où elles sont écrites, l’une après
l’autre. L’exemple le plus fréquent est la fonction.

Algorithme Code JS
DEBUT {
Instruction1 Instruction1
Instruction2 Instruction2
FIN }

[Link] instructions conditionnelles


6.3.1.L’expression if … else
Il s’agit de tester une condition et d’effectuer une série d’instructions si la condition
est vraie et si elle est fausse, effectuer une autre série d’instructions.

Algorithme Code JS
SI condition If (condition) {
ALORS Instructions1 Instruction1
SINON Instructions2 }
FINSI else {
Instruction2
}

16
Tab. 6.1: Expression conditionnelle if…else
Exemple 6.1 :

x = prompt ("votre age?","age");


if ( x < 40) {
alert ('vous êtes jeune') ;
}
else {
alert ('vous êtes vieux') ;
}

Dans l’exemple 6.1, la fonction prompt() permet d’afficher une boîte de dialogue.

6.3.2.L’expression () ? :

Il s’agit d’un moyen rapide de tester une condition et de d’exécuter une instruction
selon son résultat.

Algorithme Code JS
SI condition (condition) ? instruction 1 :
ALORS Instructions1 instruction 2
SINON Instructions2
FINSI
Tab. 6.2 : Expression conditionnelle () ? :

Dans cette expression, si la condition est vérifiée, l’instruction 1 est effectuée, sinon,
l’instruction 2 est effectuée. Précisons, que toute l’expression doit se trouver sur la même
ligne.

Exemple 6.2 :

x = prompt ("votre age?","age");


age = (x < 40)? “jeune” : “vieux”;
alert ('vous êtes ' + age) ;

[Link] instructions itératives

6.4.1.L’itération for

Elle permet de répéter des instructions en s’arrêtant à un certain nombre d’itérations


(boucles).

Algorithme Code JS
POUR i = valeur initiale A i = For (val initiale ; condition ;
valeur finale incrémentation) {
REPETER instructions Instructions
FIN POUR }
Tab. 6.3: Expression iterative for

17
Exemple 6.3 :

for (i = 0; i < 10; i++) {


[Link](i + " ");
}

6.4.2.L’itération while

Elle permet de répéter des instructions tant qu’une condition est vraie.

Algorithme Code JS
TANT QUE (condition vraie) while (condition) {
REPETER instructions instructions
FIN TANT QUE }

Tab. 6.4: Expression iterative while


Exemple 6.4 :

i = 0;
while (i < 10) {
[Link](i + " ");
i++;
}

[Link] une boucle

6.5.1.L’instruction break

Elle permet de mettre fin prématurément à une instruction itérative while ou for.

Exemple 6.5 :

for (i = 0; i < 10; i++) {


if (i == 5) {
break;
}
[Link](i + “ “);
}

6.5.2.L’instruction continue

Elle permet de mettre fin à une itération et de passer à la boucle suivante.

Exemple 6.6 :

for (i = 0; i < 5; i++) {


if (i == 2) {
continue ;
}
[Link](i + ‘<br>’);
}

18
[Link]

Dans cet exercice, vous devez afficher tous les nombres pairs compris entre 0 et 20
inclus, dans l’ordre décroissant. Il ne faudra pas afficher 10 mais 100, et il ne faudra pas non
plus afficher 14.

7. LES BOITES DE MESSAGE

7.1.Généralités

Nous abordons les boîtes de dialogue, qui sont des méthodes de l’objet window, que
nous verrons plus tard, dans la partie objet du langage. Même si nous n’avons pas encore
abordé la programmation objet, il me semble important de vous donner ces boites de dialogue,
qui s’avèrent utile en JS. Il en existe 3, que nous détaillerons l’une après l’autre.

[Link]()

Nous avons déjà utilisé cette méthode précédemment, sans savoir forcément ce qui en
retournait. Il ne comporte qu’un texte informatif et un bouton « OK ».

Syntaxe :
alert (paramètres) ;

Paramètres :
• Une chaîne de caractère
• Une variable
• Un enchaînement des deux, séparés par le signe "+"

Exemple 7.1 :

x=5;
alert ('Le nombre est ' + x) ;

[Link]()

Il s’agit d’une boite d’invite, composée d’un texte, d’une zone de texte, d’un bouton
« OK » et d’un bouton « Annuler ».

Syntaxe :
variable = prompt ("texte", "valeur");

La méthode retourne la valeur du champ si le bouton « OK » est choisi dans le cas


inverse (bouton « Annuler »), la variable reçoit la valeur « NULL ».

Paramètres :
• Le texte à afficher dans la boite de message
• La valeur par défaut à afficher dans la boite d’invite.

Exemple 7.2 :

x = prompt ('Votre prénom ?','prénom') ;


alert (x) ;

19
[Link]()

Il s’agit d’une boite de confirmation, composée d’un texte, d’un bouton « OK » et


d’un bouton « Annuler ».

Syntaxe :

variable = confirm ("texte");

La méthode retourne true si on clique sur « OK », et false si on clique sur « Annuler »

Paramètre :
• Le texte à afficher dans la boite de message

Exemple 7.3 :

x = prompt ('Votre prénom ?','prénom') ;


y = confirm ('Votre prénom est bien ' + x + ‘ ?’) ;

[Link] : Confirmation et vérification

Le but est de récupérer et afficher 3 informations de l’utilisateur à l’écran. Il faut


demander à l’utilisateur son login. S’il choisit annuler, on affiche la page blanche. Ensuite, on
compare le login entré avec celui attendu : s’il est différent, on redemande le login, sinon, on
continue le traitement. On demande ensuite le password. On vérifie qu’il est correct et on
continue. S’il ne l’est pas, on redemande 2 fois ce password. S’il est toujours incorrect au 3ème
essai, on affiche un message d’erreur à l‘écran, et le traitement est fini. Enfin, on demande le
prénom de l’utilisateur, puis on demande vérification à l’internaute. Si le prénom est correct,
on l’affiche à l’écran.

Pour afficher à l’écran, utiliser la méthode [Link](), en passant la chaîne à


afficher en paramètre.

Cet exercice utilisera vos connaissances au niveau des fonctions, des variables, des
structures algorithmiques, et bien entendu des boites de dialogue.

Dans la solution, le login est « prof » et le password est « abcd ». Je suis resté
classique.

8. NOTION OBJET

Bien que ce ne soit pas le but dans ce chapitre, il me semble important de rappeler le
concept objet, notamment pour ceux qui ne le connaissent pas. Il ne s’agit pas d’un cours
magistral, mais juste d’un résumé à des fins d’utilisation en JS.

[Link] concept objet

Jusque-là, nous avons vu des variables, avec une valeur, indépendantes des autres.
Maintenant, on parlera d’objet. Un objet – en général - possède des caractéristiques et des
compétences. On peut voir ces caractéristiques et utiliser les compétences. En informatique,
un objet possède des variables et des fonctions, qui permettent de décrire son comportement.
Ces variables sont appelées propriétés et ces fonctions sont appelées méthodes. De cette
façon, on peut voir les propriétés et utiliser les méthodes.

20
[Link]éation d’un objet

Un objet est créé en utilisant une fonction spéciale de la classe, précédée du mot new.
Cette fonction est appelée constructeur, et porte le nom de la classe. Un objet est appelé
instance de la classe.

Syntaxe :
var objet = new classe ();

Exemple 8.1 :
var montableau = new Array ();

[Link]ès aux propriétés et aux méthodes

On accède aux propriétés – et aux méthodes – d’un objet en accolant l’objet et sa


propriété avec l’opérateur « . ».

Syntaxe :
[Link]été
objet.méthode()

Exemple 8.2: par extrapolation

Rémi = new Homme () ;


Ré[Link] = "bleus" ;
Ré[Link] = "bruns" ;

Exemple 8.3:

[Link] ("Hello world !");

L’objet document est intégré au langage, et sa méthode write() permet d’écrire dans la
page courante.

8.4.L’objet this

Il existe un objet très utile en JS objet : this. Même s’il sera plus utile en
programmation objet, lorsque vous créerez vos classes. Il s’agit d’un objet qui représente
l’objet en cours. Il possède alors les propriétés et les méthodes de l’objet. Etant donné son
utilité minime avant la programmation objet, je ne donnerai pas d’exemple ici.

9. LES FORMULAIRES

9.1.Généralités

[Link]ésentation

On attaque ici le gros morceau du JS. Sans les formulaires, les pages HTML ne
proposent aucune interactivité avec l’utilisateur. En effet, la page appelée est envoyée par le
serveur et le browser ne fait que l’afficher, il ne peut rien faire avec le serveur. Les champs de

21
formulaire (form) permettent l’utilisateur d’entrer des informations auxquelles la page pourra
réagir. Ces réactions seront programmées à l’avance par vous. Cela reste assez limité, puisque
l’interaction ne quitte pas la machine du client, mais on peut effectuer quelques traitements.
Mon but n’est pas de vous apprendre le HTML, je ne reviendrai donc pas sur le
fonctionnement des balises.
Autre point, j’indique ici, par commodité, les propriétés JS, dont on se servira plus
loin. Ne vous en préoccupez pas si vous ne comprenez pas de quoi il s’agit.

[Link] balise form

Chaque formulaire doit être encadré par les balises <form>…</form>. Toutes les
balises seront comprises entre ces deux-là.
Si vous travaillez avec PHP ou un autre langage, vous aurez sûrement besoin
d’envoyer les informations à un serveur. Dans ce cas, indiquez dans la balise <form> la
méthode (post ou get) et l’URL du script qui traitera l’information.

Exemple 9.1 :

<form method=’post’ action=’[Link]’>


………
</form>

Si vous désirez que les informations du formulaire vous soient envoyées par mail,
précisez ‘[Link] dans l’action.

Exemple 9.2:

<form method=’post’ action=’[Link]


………
</form>

Dans chaque cas, n’oubliez pas d’insérer un bouton submit dans votre formulaire.

9.2. Champ de texte

[Link] de texte

Il s’agit de l’élément d’entrée/sortie le plus courant en JS. Une simple ligne où


l’utilisateur peut écrire quelques mots.

Syntaxe HTML:

<input type=”text” name=”nom” value="valeur" size=x


maxlength=z>

Paramètres HTML :
• name : le nom du champ (servira lors de la programmation)
• value : la valeur que vous voulez afficher dans la ligne de texte (facultatif).
• size : la longueur de la ligne de texte. Si le texte est trop long, la ligne défilera.
• maxlength : le nombre de caractères maximum contenus dans la ligne de texte
(facultatif mais conseillé).

22
Propriétés JS :
• name : indique le nom du contrôle.
• defaultvalue : indique la valeur par défaut affichée dans la ligne de texte.
• value : indique la valeur actuellement dans la zone de texte.

Exemple 9.3 :

<form method=”post” action=”[Link]


<input type=”text” name=”text1” size=20 maxlength=40><br>
<input type="submit"name="envoi" value="envoyer">
</form>

[Link] de texte

Il s’agit de plusieurs lignes de textes. Utile quand le texte est long.

Syntaxe HTML :

<textarea name=”nom” rows=x cols=y>


texte par défaut
</textarea>
Paramètres HTML :
• name : le nom du champ (servira lors de la programmation)
• rows : le nombre de lignes affichés à l’écran. Si le texte est trop long, la zone de texte
défilera.
• cols : le nombre de colonnes affichées à l’écran.

Propriétés JS :
• name : indique le nom du contrôle.
• defaultvalue : indique la valeur par défaut affichée dans la ligne de texte.
• value : indique la valeur actuellement dans la zone de texte.

Exemple 9.4 :

<form method=”post” action=”[Link]


<textarea name=”text2” rows=5 cols=20>
zone de texte
</textarea><br>
<input type="submit"name="envoi" value="envoyer">
</form>

[Link] password

Il s’agit d’une ligne de texte dont les caractères sont cachés.

Syntaxe HTML :

<input type=”password” name=”nom” value="valeur" size=x


maxlength=z>

Paramètres HTML :
• name : le nom du champ (servira lors de la programmation)

23
• value : la valeur que vous voulez afficher dans le champ (facultatif).
• size : la longueur de la ligne de texte. Si le texte est trop long, la ligne défilera.
• maxlength : le nombre de caractères maximum contenus dans la ligne de texte
(facultatif mais conseillé).

Propriétés JS :
• name : indique le nom du contrôle.
• defaultvalue : indique la valeur par défaut affichée dans la ligne de texte.
• value : indique la valeur actuellement dans le champ password.

Exemple 9.5 :

<form method=”post” action=”[Link]


<input type=”password” value=”password” name=”text1” size=20
maxlength=40><br>
<input type="submit"name="envoi" value="envoyer">
</form>

[Link] à sélectionner

[Link] radios

Il s’agit de cases à cocher à choix unique. D’une forme ronde, elle sont liées entre elles
au niveau du code JS.

Syntaxe HTML :

<input type=”radio” name=”nom” value="valeur"> texte

Paramètres HTML :
• name : le nom du champ (servira lors de la programmation) il doit être identique pour
chaque choix.
• value : la valeur que vous voulez afficher dans le champ (facultatif).
• checked : à mettre sur un seul bouton, qui sera sélectionné par défaut.

Il est nécessaire de préciser le label après le contrôle (texte)

Propriétés JS :
• name : indique le nom du contrôle.
• checked : indique si le bouton radio est coché, actuellement.
• defaultchecked : indique si le bouton radio est coché ou non par défaut.
• value : indique la valeur du bouton radio.
• index : indique le rang du bouton radio, à partit de 0.

Exemple 9.6 :

<form method=”post” action=”[Link]


<input type=”radio” name=”choix” value=”1”> choix 1<br>
<input type=”radio” name=”choix” value=”2”> choix 2<br>
<input type=”radio” name=”choix” value=”3”> choix 3<br>
<input type="submit"name="envoi" value="envoyer">
</form>

24
[Link]

Il s’agit de cases à cocher à choix multiple.

Syntaxe HTML :

<input type=”checkbox” name=”nom” value="valeur"> texte

Paramètres HTML :
• name : le nom du champ (servira lors de la programmation). Il doit être différent pour
chaque choix.
• value : la valeur que vous voulez afficher dans le champ (facultatif).
• checked : à mettre sur un (ou plusieurs) bouton, qui sera sélectionné par défaut.

Il est nécessaire de préciser le label après le contrôle (texte)

Propriétés JS :
• name : indique le nom du contrôle.
• checked : indique si la case est cochée, actuellement.
• defaultchecked : indique si la case est cochée ou non par défaut.
• value : indique la valeur de la case à cocher.

Exemple 9.7 :

<form method=”post” action=”[Link]


<input type=”checkbox” name=”choix1” value=”1”>
choix 1<br>
<input type=”checkbox” name=”choix2” value=”2”>
choix 2<br>
<input type=”checkbox” name=”choix3” value=”3”>
choix 3<br>
<input type="submit"name="envoi" value="envoyer">
</form>

[Link] de sélection

Il s’agit d’une liste déroulante dans laquelle on peut sélectionner un option.

Syntaxe HTML :

<select name=”nom” size=x>


<option value="valeur"> texte
</select>

Paramètres HTML :
• name : le nom du champ (servira lors de la programmation).
• size : le nombre d’options que vous voulez afficher à l’écran. S’il n’est pas précisé, la
liste n’affiche qu’une seule ligne.
• value : la valeur que vous voulez afficher dans le champ (facultatif).
• selected : à mettre dans une balise <option>. Cette option sera sélectionnée par défaut.
• Multiple : à mettre dans une balise <select>. Autorise la sélection de plusieurs options
dans la liste déroulante.

25
Chaque option de la liste déroulante correspond à une balise <option>. Il est nécessaire
de préciser le label après chaque option contrôle (texte).

Propriétés JS :
• name : indique le nom du contrôle.
• selected : indique si le bouton radio est sélectionné
• defaultselected : indique si le bouton radio est coché ou non par défaut.
• length : indique le nombre d‘éléments de la liste.

Exemple 9.8 :

<form method=”post” action=”[Link]


<select name=”choix” size=3>
<option value=”1”>choix 1
<option value=”2”>choix 2
<option value=”3”>choix 3
</select><br>
<input type="submit"name="envoi" value="envoyer">
</form>

Exemple 9.9 :

<form method=”post” action=”[Link]


<select name=”choix”>
<option value=”1”>choix 1
<option value=”2”>choix 2
<option value=”3”>choix 3
</select><br>
<input type="submit"name="envoi" value="envoyer">
</form>

[Link]

[Link] simple

Syntaxe HTML :

<input type=”button” name=”nom” value=”valeur”>

Paramètres HTML :
• name : le nom du champ (servira lors de la programmation).
• value : la valeur que vous voulez afficher sur le bouton.

Propriétés JS :
• name : indique le nom du contrôle.
• value : indique la valeur actuelle du bouton.
• defaultselected : indique la valeur par défaut du bouton.

Exemple 9.10 :

<form method=”post” action=”[Link]


<input type="button"name="click" value="Cliquez">
</form>

26
[Link] reset

Il permet de remettre la valeur par défaut de tous les champs du formulaire.

Syntaxe HTML :

<input type=”reset” name=”nom” value=”valeur”>

Paramètres HTML :
• name : le nom du champ (servira lors de la programmation).
• value : la valeur que vous voulez afficher sur le bouton.

Propriétés JS :
• name : indique le nom du contrôle.
• value : indique la valeur actuelle du bouton.
• defaultselected : indique la valeur par défaut du bouton.

Exemple 9.11 :

<form method=”post” action=”[Link]


<select name=”choix” size=3>
<option value=”1”>choix 1
<option value=”2”>choix 2
<option value=”3” selected>choix 3
</select><br>
<input type="reset" name="effacer" value="effacer">
</form>

[Link] submit

Il permet d’exécuter l’action prévue dans la balise <form>, comme on l’a vu dans la
partie 6.1.2.

Syntaxe HTML :

<input type=”submit” name=”nom” value=”valeur”>

Paramètres HTML :
• name : le nom du champ (servira lors de la programmation).
• value : la valeur que vous voulez afficher sur le bouton.

Propriétés JS :
• name : indique le nom du contrôle.
• value : indique la valeur actuelle du bouton.
• defaultselected : indique la valeur par défaut du bouton.

Exemple 9.12 :

<form method=”post” action=”[Link]


<select name=”choix” size=3>
<option value=”1”>choix 1

27
<option value=”2”>choix 2
<option value=”3” selected>choix 3
</select><br>
<input type="submit" name="envoi" value="envoyer">
</form>

[Link]ôle caché

Il permet de mettre dans le script des éléments (souvent des données) qui ne seront pas
affichées par le navigateur, mais qui pourront être envoyées par mail ou à un serveur.

Syntaxe HTML :

<input type=”hidden” name=”nom” value=”valeur”>

Paramètres HTML :
• name : le nom du champ (servira lors de la programmation).
• value : la valeur qui sera contenue dans le contrôle.

Propriétés JS :
• name : indique le nom du contrôle.
• value : indique la valeur actuelle du contrôle.
• defaultselected : indique la valeur par défaut du contrôle.

Exemple 9.13 :

<form method=”post” action=”[Link]


<input type="hidden" name="date" value="30/06/2004">
<input type=”button” name=”click” value=”Vous pouvez
cliquez!”>
</form>

[Link] formulaire complet

Voilà un formulaire complet, utilisant la plupart des contrôles que nous avons vu ci-
dessus. Il pourrait s’agir d’un formulaire réel, mais je l’ai inventé de toutes pièces. De
nombreux sites proposent des formulaires, rien ne vous empêche d’enregistrer la page est
d’aller fouiner pour voir leur astuces…

Exemple 9.14 :

<form method=”post” action=”[Link]”>


Inscription au stage<br>
Identité<br>
<input type="hidden" name="date" value="15/06/04">
<input type=text name=”nom” value=”Nom”>&nbsp;
<input type=text name=”prénom” value=”Prénom”><br>
<input type=text name=”date” value=”Date de naissance ”><br>
Activité<br>
<select name=”Activité”>
<option value=”Collégien”>Collégien
<option value=”Lycéen”>Lycéen
<option value=”Etudiant”>Etudiant

28
<option value=”Salarié”>Salarié
<option value=”Fonctionnaire”>Fonctionnaire
<option value=”Patron”>Patron
</select><br>
Qualification(s):<br>
<input type=”checkbox” name=”choix1” value=”bafa”> BAFA<br>
<input type=”checkbox” name=”choix2” value=”bafd”> BAFD<br>
<input type=”checkbox” name=”choix3” value=”rien”> rien<br>
Semaine choisie:<br>
<input type=”radio” name=”semaine” value=”1”>
1ère<br>
<input type=”radio” name=”semaine” value=”2”>
2ème<br>
<input type=”radio” name=”semaine” value=”3”>
3ème<br>
Vos motivations :<br>
<textarea name="motivations" rows=5 cols=20></textarea><br>
<input type="submit" name="envoi" value="envoyer">
&nbsp;
<input type="reset" name="effacer" value="effacer">
</form>

[Link] objet du formulaire

Nous avons vu précédemment la notion d’objet7. Maintenant que nous avons vu tous
les composants d’un formulaire, nous allons pouvoir utiliser le concept objet appliqué aux
formulaires.

Même si nous n’avons pas encore vu les objets du navigateur8, nous allons introduire
ici l’objet document. Il renvoie à la page en cours. Il contient en propriétés tous les éléments
de la page. Les attributs des balises deviennent les propriétés de l’élément objet. On y a accès
de la façon suivante :

Syntaxe :
[Link].élé[Link]été

Un exemple éclairera le propos. L’exemple 9.15 montre comment attribuer une valeur
à une ligne de texte.

Exemple 9.15:

<html>
<head>
<script language = "JavaScript">
function f() {
[Link]="voici du texte";
}
</script>
</head>
<body onLoad="f();">
7
Voir, pour ceux qui auraient oublié, le chapitre [Link] OBJET.
8
Voir pour cela le chapitre [Link] OBJETS DU NAVIGATEUR.
29
<form name="form1">
<input type="text" name="texte" value="">
</form>
</body>
</html>

Dans l’exemple 9.15, la fonction est appelée à la fin du chargement grâce au


gestionnaire d’événement9 placé dans la balise <body>.

De cette façon, on peut accéder à chaque élément de chaque formulaire de la page. Il


est important de donner un nom, à la fois au formulaire et au contrôle. Ce nom doit de
préférence être explicite, même si celui du formulaire peut rester classique, étant donné qu’il
y en a rarement plusieurs sur une seule et même page. Lorsque nous travaillerons avec les
frames, en revanche, ce nom sera important.

Cette manière de pouvoir accéder aux objets est très pratique, même si pour le
moment, elle ne semble pas très utile. Cette utilité sera mise en valeur lors du prochain
chapitre. Mais avant cela, il est souhaitable de faire un petit exercice.

[Link]

Le but de cet exercice est d’arriver à un formulaire complet et assez ergonomique. Il


faudra faire attention aux choix des contrôles et à la disposition. La solution proposée n’est
pas parfaite – loin de là – mais elle illustre à peu près ce qu’est un formulaire de qualité
correcte.

Le formulaire à créer est un formulaire d’adhésion à une association, pour l’activité


échecs. Les informations demandées sont les suivantes : nom, prénom, date de naissance,
numéro de téléphone, adresse, mail, profession (choix, dont « autres : préciser »), centres
d’intérêt (choix), niveau de jeu, motivations. Vous présenterez ce formulaire de façon assez
esthétique, mais la police et la taille de caractères ne sont pas importantes, cela dépend plutôt
du cours HTML. Bien entendu, on envoie le tout à « [Link] », par la méthode « post »
en cliquant sur un bouton.

10. LES EVENEMENTS

10.1.Généralités

[Link]ésentation

Les événements sont l’intérêt du JS en matière de programmation Web. Ils donnent


une interactivité à la page que vous consultez, ce qui n’existe pas avec le HTML, si on
excepte bien entendu le lien hypertexte. Le JS permet de réagir à certaines actions de
l’utilisateur. On nomme évènement le mot Event, et gestionnaire d’événement le mot-clé
onEvent.
[Link]

Les évènements sont indiqués dans la balise, d’un formulaire, le plus souvent. Ils
apparaissent comme un paramètre supplémentaire et suivent une syntaxe particulière.

Syntaxe :
9
Nous verrons cela dans le chapitre [Link] EVENEMENTS.
30
<balise onEvent=”code">

• balise : désigne le nom de la balise HTML qui supporte l’événement.


• onEvent : désigne le gestionnaire d’événement associé à l’événement Event.
• Le code inséré entre guillemets fait le plus souvent référence à une fonction définie
dans les balises <head>…</head>. Il peut cependant s’agir d’instructions directement.

Plusieurs gestionnaires d’évènements peuvent être placés dans la même balise.


Certaines balises n’appartenant pas à un formulaire peuvent supporter des gestionnaires
d’évènement.

Exemple 10.1 :

<a href=”[Link] onClick=”alert(‘vous avez cliqué!’);”


onMouseOver=”alert(‘Héhé’) ;”> click?</a>

[Link] clic de souris

Lorsque vous cliquez sur un élément de formulaire de la page que vous consultez.

Gestionnaire d’événement :

onClick
Exemple 10.2 :

<input type=”button” onClick=”alert(‘vous avez cliqué sur le bouton’) ;">

Résultat

Balises supportées :
<input type="button">, <input type="checkbox">, <input type="radio">, <input
type="reset">, <input type="submit">, <a href..>

[Link] chargement

[Link]

Lorsque la page que vous consultez finit de se charger.

Gestionnaire d’événement :

onLoad

Exemple 10.3 :

<body onLoad=”alert(‘la page est chargée !’) ;">

Balises supportées :
<body>, <frameset>

31
[Link]

Lorsque vous quittez un document ou une page web.

Gestionnaire d’événement :

onUnLoad
Exemple 10.4 :

<body onUnLoad=”alert(‘Vous quittez la page !’) ;">

Balises supportées :
<body>, <frameset>

[Link]

Lorsque le chargement d’une page ou d’un image s’interrompt en erreur.

Gestionnaire d’événement :

onError
Exemple 10.5 :

<img src="[Link]" onError=”alert(‘Erreur de chargement !’) ;">

Balises supportées :
<body>, <frameset>, <img>

[Link]

Lorsque vous interrompez le chargement d’une image.

Gestionnaire d’événement :

onAbort
Exemple 10.6 :

<img src="[Link]" onAbort=”alert(‘Vous avez interrompu le chargement de


l’image !’) ;">

Balises supportées :
<img>

[Link] passage de la souris

[Link]

Lorsque vous survolez un lien ou une zone d’image activable. Une zone d’image
activable est une partie d’image qui a été transformée en lien. Je ne reviendrai pas sur ce sujet,
ce n’est pas l’objet de ce cours.

Gestionnaire d’événement :

32
onMouseOver
Exemple 10.7 :

<a href="[Link] onMouseOver=”alert(‘Pour aller sur


[Link], cliquer ici’) ;">[Link]

Balises supportées :
<a href…>, <area href…>

[Link]

Lorsque vous sortez de la zone de survol d’un lien ou d’une zone d’image activable.

Gestionnaire d’événement :

onMouseOut

Exemple 10.8 :

<a href="[Link] onMouseOut=”alert(‘Vous ne voulez pas y


aller ?’) ;">[Link]

Balises supportées :
<a href…>, <area href…>

[Link] focus

[Link]

Lorsque vous activer un contrôle texte ou sélection.

Gestionnaire d’événement :

onFocus

Exemple 10.9 :

<input type="text" value="votre nom" name=”nom” onFocus=”alert(‘Ecrivez


votre nom ici’) ;">

Balises supportées :
<input type="text">, <select>, <textarea>, <input type="password">

[Link]

Lorsque vous quitter un contrôle texte ou sélection.

Gestionnaire d’événement :

onBlur
Exemple 10.10 :

33
<input type="text" value="votre nom" name=”nom” onBlur=”alert(‘Vous
n\’avez rien oublié ?’) ;">

Balises supportées :
<input type="text">, <select>, <textarea>, <input type="password">

[Link] changements

Lorsque la valeur d’un texte ou d’une option change dans un formulaire. Si vous
cliquez dans la zone de texte mais que vous ne touchez pas au texte, rien ne se produit.

Gestionnaire d’événement :

onChange

Exemple 10.11 :

<input type="text" value="votre nom" name=”nom” onChange=”alert(‘Vous


avez changé votre nom ??’) ;">

Balises supportées :
<input type="text">, <select>, <textarea>, <input type="password">

[Link] sélection

Lorsque vous sélectionnez du texte dans un champ de texte.

Gestionnaire d’événement :

onSelect
Exemple 10.12 :

<input type="text" value="votre nom" name=”nom” onSelect=”alert(‘Vous


avez sélectionné un champ’) ;">

Balises supportées :
<input type="text">, <textarea>

10.8.L’envoi

Lorsque vous cliquez sur un bouton « submit » d’un formulaire de type « post » ou
« get ».

Gestionnaire d’événement :

onSubmit
Exemple 10.13 :

<input type="submit" value="Envoyer" name=”envoi”


onSubmit=”alert(‘C’est parti !’) ;">

34
Balises supportées :
<input type="submit">

[Link] reset

Lorsque vous sélectionnez un champ de texte.

Gestionnaire d’événement :

onReset

Exemple 10.14 :

<input type="reset" value="Effacer" name=”effacer” onSubmit=”alert(‘On


efface tout !’) ;">

Balises supportées :
<input type="reset">

10.10.L’utilisation de l’objet document

Avant de voir les évènements, l’intérêt de l’accès aux éléments à travers l’objet
document était discutable. Maintenant, on voit que l’on peut changer des valeurs selon des
évènements, ce qui est très intéressant. Il est aussi possible de demander confirmation, de
demander si on veut vraiment changer la valeur… Tout est permis. Cette partie ne comporte
pas d’exemple, car la partie [Link] concret en présente un assez complet.

[Link] concret

Voici un exemple – parmi tant d’autres – de ce que pourrait être un formulaire


interactif, avec tous les évènements auxquels on peut penser.

Exemple 10.15 :

<HTML>
<HEAD>
<TITLE>New Document</TITLE>
<script language="Javascript">
var TestLog = 0; //test pour le login
function ChangeLog() {
TestLog++; //incrémente le test
//si le login a été changé plus d'une fois
if (TestLog > 1) {
alert("Vous changez de login?\n Décidez-vous!");
}
}
function VerifPass () {
// si les deux password sont différents
if ([Link] != [Link]) {
alert("Vous avez entré deux password différents !\nVérifiez les deux.");
}
}

35
function VerifMail () {
//confirmation du mail
var test = confirm ("Votre mail est bien : " + [Link] + "
?");
if (test == false) { //si l'internaute ne confirme pas
alert("N'oubliez pas de changer votre mail!");
}
}
</script>
</HEAD>
<BODY>
<form name="form1">
<center>Formulaire d'inscription sur notre site</center><br/>
Login : <input type="text" name="login" onChange="ChangeLog();"
value="login"><br/>
Password : <input type="password" name="pass1"><br/>
Password (vérification) : <input type="password" name="pass2"
onBlur="VerifPass();"><br/>
Adresse e-mail : <input type="text" name="mail" onBlur="VerifMail();"
value="@"><br/>
Vous voulez recevoir la newsletter? <input type="radio" name="news"
value="yes">Oui <input type="radio" name="news" value="no" onClick="alert('Tant
pis pour vous!')">Non<br/>
<input type="submit" name="sub" value="Envoi"> <input type="reset"
name="reset" value="Effacer">
</form>
</BODY>
</HTML>

Résultat

[Link]

[Link] bouton

L’exercice consiste à faire un bouton dont la valeur s’incrémente à chaque clic. Ce


n’est pas très compliqué.

[Link] phrase
L’exercice consiste à demander 3 informations à un utilisateur, puis de les afficher
dans une zone de texte en faisant une phrase. Il faudra demander le nom à l’aide d’une boite
de message, ainsi que l’âge et la ville avec des lignes de texte. Ensuite, en cliquant sur un
bouton, on affiche une phrase contenant les 3 informations dans un zone de texte.

11. L’OBJET ARRAY

11.1.Généralités

L’objet Array n’est rien d’autre qu’un tableau. Un tableau est en quelque sorte une
liste d’éléments indexés que l’on pourra lire – chercher les données - ou écrire – entrer les
données – à volonté.

36
[Link]éation et affectation d’un tableau

11.2.1 Création d’un tableau

On créé un tableau comme n’importe quel objet de classe. On invoque le constructeur


de classe. On indique en paramètre du constructeur le nombre maximum d’éléments (x) que
l’on souhaite entrer dans le tableau. Ce nombre est cependant facultatif, car JS prend en
compte le numéro du dernier élément entré comme taille du tableau si le ce nombre n’est pas
indiqué.

Syntaxe :
variable = new Array(x) ;

Exemple 11.1 :

var MonTableau = new Array (10) ;

11.2.2 Affectation d’un tableau

On affecte un tableau très simplement. Il suffit d’affecter une valeur (y) à la variable
avec le numéro de l’élément (i) entre crochets. Ces derniers ne sont pas présents lors de la
création mais sont indispensables lors de l’affectation. Le numéro commence à 0 et finit au
nombre maximum moins 1.

Syntaxe :

variable = new Array(x) ;


variable [i] = y;
Exemple 11.2 :

var MonTableau = new Array (2) ;


MonTableau [0] = 7 ;
MonTableau [1] = 4 ;
Evidemment, à ce rythme-là, l’affectation est longue, surtout si votre tableau compte
plus que quelques éléments. C’est pourquoi on utilise la boucle itérative for. L’exemple
suivant entre une série de nombre en ajoutant 1 à chaque fois. Il s’agit d’un exemple rapide et
simple, mais on peut imaginer faire un calcul ou demander une valeur à l’utilisateur à chaque
boucle.

Exemple 11.3 :

var MonTableau = new Array (5) ;


for ( var i = 0 ; i < 5 ; i++) {
MonTableau [i] = i;
[Link] (MonTableau[i]);
}

[Link]ès aux données d’un tableau

On accède aux données d’un tableau en indiquant le numéro de l’élément entre


crochets. On affecte cette valeur à une variable, par exemple. On peut aussi la rentrer comme
paramètre d’une fonction.

37
Syntaxe :

variable1 = new Array(x) ;


variable1 [i] = y ;
variable2 = variable1 [i] ;

Exemple 11.4 :

var MonTableau = new Array (2) ;


MonTableau [0] = 7 ;
var element = MonTableau [0] ;
[Link] (MonTableau [0]) ;

[Link] à 2 dimensions

Pour créer un tableau à 2 dimensions, on utilise l’astuce suivante : on déclare chaque


élément comme un nouveau tableau.

Syntaxe :

variable = new Array (x) ;


variable [i] = new Array (y) ;

Exemple 11.5 :

var MonTableau = new Array (2) ;


MonTableau [0] = new Array (7) ;

Il est bien entendu plus rapide d’utiliser une instruction itérative pour créer ce tableau
à 2 dimensions.

Exemple 11.6 :

var MonTableau = new Array (5) ;


for ( var i = 0 ; i < 5 ; i++) {
MonTableau [i] = new Array (3);
}

Avec ce système, on peut créer un tableau à 3,4 dimensions ou plus, bien que l’utilité
en soit quelque peu douteuse…

[Link]étés et méthodes

Comme tout objet, l’objet Array possède une propriété et des méthodes qui s’avèrent
assez utiles.

[Link]été

L’objet Array ne possède qu’une propriété – length – qui désigne le nombre


d‘éléments du tableau.

Syntaxe :
variable = new Array (x) ;

38
y = [Link] ;

Exemple 11.7 :

var MonTableau = new Array (2) ;


[Link] ([Link]) ;

11.5.2.Méthodes

L’objet Array possède plusieurs méthodes qui permettent de manier les éléments du
tableau.

Syntaxe :

tableau.méthode() ;

• join (séparateur) : regroupe tous les éléments du tableau en une seule chaîne. Chaque
élément est séparé par un séparateur. Ci celui-ci n’est pas précisé, ce sera une virgule.
• reverse () : inverse l’ordre des éléments sans les trier.
• sort () : Renvoie les éléments par ordre alphabétique, s’ils sont de même nature.
• concat(tableau) : concatène le tableau passé en paramètre avec celui de la méthode.
• pop() : supprime le dernier élément du tableau.
• push(élément1,…) : ajoute l(es) élément(s) passé(s) en paramètre à la fin du tableau.
• shift() : supprime le premier élément du tableau.
• slice(début,fin) : renvoie les éléments contenus entre la position supérieure ou égale à
début et inférieure à fin.
• splice(début, nombre, éléments) : supprime les éléments à partir de la position début et
sur nombre de position. Les éléments sont remplacés par ceux fournis en paramètre
(facultatif).
• unshift(élément1,…) : ajoute l(es) élément(s) passé(s) en paramètre au début du
tableau.

Exemple 11.8 :

var MonTableau = new Array (4) ;


MonTableau [0] = “Moi” ;
MonTableau [1] = “Toi” ;
MonTableau [2] = “Lui” ;
MonTableau [3] = “Elle” ;
[Link]() ;
[Link] ([Link](‘ ‘)) ;
[Link]() ;
[Link] ("<br>" + [Link](‘ ‘)) ;

[Link] concret

Le but de cet exemple est de remplir et afficher les valeurs à 0.1 près comprises entre 0
et 10 exclu. Pour cela, on utilise un tableau à deux dimensions, dont la première indique la
partie entière du nombre, et la deuxième dimension indique la partie décimale. On va d’abord
créer le tableau, puis le remplir et enfin l’afficher.

Exemple 11.9 :

39
<script language="Javascript">
var Tableau = new Array (10) ; // objet tableau
for (i = 0; i < 10; i++) { // pour chaque élément...
Tableau[i] = new Array(10); // on redéfinit un tableau
}
// remplissage du tableau
for (i = 0; i < 10; i++) { /* pour chaque élément de la première dimension*/
for (j = 0; j < 10; j++) { /* pour chaque élément de la seconde
dimension*/
Tableau[i][j] = i + "." + j; //on remplit l'élément
}
}
// affichage du tableau
for (i = 0; i < 10; i++) { /* pour chaque élément de la première dimension */
for (j = 0; j < 10; j++) { /* pour chaque élément de la seconde dimension
*/
[Link]( Tableau[i][j] + " ; " ); /*on affiche l'élément, avec
un point virgule */
}
[Link] ("<br>"); /* a chaque unité, on revient à la ligne. */
}
</script>

[Link]

Le but de l’exercice est d’afficher les entiers compris entre 1 et 10 inclus dans l’ordre
décroissant. Vous utiliserez pour cela un tableau de 10 éléments.

[Link] OBJETS DU NAVIGATEUR

12.1.Généralités

Nous avons vu les classes prédéfinies en JS. Il existe aussi plusieurs objets en JS
rattachés à la fenêtre, à la page et au navigateur. Ils sont appelés window, document et
navigator. Ce sont 3 classes distinctes - sans lien entre elle – puisque l’héritage n’existe pas
en JS. Nous étudierons chaque classe l’une après l’autre. Cependant, l’objet document fait
partie de l’objet window.

[Link]

Je présente ici l’arborescence des objets de JS. Elle comprend les 3 objets principaux
ainsi que tous les « sous-objets » contenus dans chaque objet principal.

40
navigator document
plugins [] all / layers

window frames[]

parent images[]

frames[] anchors[]

top applets[]

opener plugins[]

history links[]

location forms []

external elements []

screen

event

document

13.L’OBJET NAVIGATOR

Il s’agit – comme son nom l’indique – de votre navigateur, ou votre browser. Les deux
principaux sont sûrement Microsoft Internet Explorer et Netscape. L’objet navigator possède
toutes les caractéristiques de votre navigateur ainsi que certaines de votre ordinateur. Cela
peut s’avérer utile pour tester la compatibilité de certains codes avec un browser.
L’objet navigator étant intégré dans le langage, il n’est pas nécessaire de créer une
instance de cette classe.

[Link] propriétés de navigator

Toutes ces propriétés ne font que donner des informations sur votre type de
navigateur. Pour y accéder, on suit la syntaxe habituelle d’un objet.

Syntaxe :

variable = [Link]été ;

Les propriétés qui suivent fonctionnent sous tous les navigateurs. Les compatibilités ne seront
évoquées que pour Netscape et Internet Explorer.

• appCodeName : nom de code du navigateur.


• appName : nom complet du navigateur.
• appVersion : numéro de version du navigateur ainsi que d’autres informations de
plate-forme.
• userAgent : informations de appCodeName et de appVersion réunies.

Certaines propriétés ne fonctionnent qu’avec Microsoft Internet Explorer. Veillez à


tester le type de browser avant d’exécuter le script !

41
• appMinorVersion : numéro de version mineure.
• browserLanguage : code langue du browser.
• userLanguage : code langue de l’utilisateur.
• systemLanguage : code langue du système d’exploitation.
• cpuClass : classe du processeur.
• platform : code type de plate-forme (pc, mac, linux …).
• cookieEnabled : booléen qui indique si l’utilisateur accepte les cookies.
• onLine : booléen qui indique si le poste est connecté à Internet.

Une propriété existe sous Netscape pour remplacer la propriété browserLanguage


d’Internet Explorer.

• language : code langue du browser.

[Link] méthodes de navigator

Dans cette partie, je vous cite les méthodes de navigator, mais malheureusement, je ne
suis pas en mesure de vous expliquer leur utilité. Si vous le savez, merci de me le faire savoir.

Syntaxe :
variable = navigator.méthode() ;

• javaEnabled()
• taintEnabled()

[Link] objets de navigator

L’objet navigator contient un autre objet, qui n’hérite pas de lui. Il s’agit du tableau
plugins, qui n’est reconnu que par Netscape. Il s’agit de la liste de tous les plugins installés.
Personnellement, je ne vois pas l’utilité de cet objet, mais par souci didactique, je vous le
décris.

Syntaxe :
variable = [Link]été ;

• [Link] : nombre de plugins


• plugins[i].name : nom du plugin n° i.
• plugins[i].filename : nom de l’exécutable du plugin n° i.
• plugins[i].description : description du plugin n° i.
• plugins[i].length : nombre de types de fichiers supportés par le plugin n° i.
• plugins[i][j].type : type n° j du plugin n° i.
• plugins[i][j].suffixes : Extensions des fichiers du type n° j du plugin n° i.

[Link]

Le but de l’exemple 13.1 est d’afficher les informations du navigateur, en fonction de


celui-ci. On commencera donc par tester le type de navigateur. L’exemple 13.1 n’est pas
commenté car il n’ a rien de nouveau excepté les propriétés vues ci-dessus.

Exemple 13.1 :

<script language="Javascript">

42
[Link] ([Link] + "<br>");
[Link] ([Link] + "<br>");
[Link] ([Link] + "<br>");
[Link] ([Link] + "<br>");
if ([Link] == "Microsoft Internet Explorer") {
[Link] ([Link] + "<br>");
[Link] ([Link] + "<br>");
[Link] ([Link] + "<br>");
[Link] ([Link] + "<br>");
[Link] ([Link] + "<br>");
[Link] ([Link] + "<br>");
[Link] ([Link] + "<br>");
[Link] ([Link] + "<br>");
}
else {
[Link] ([Link] + "<br>");
}
</script>

Ce chapitre ne comporte pas d’exercice car le contenu est assez restreint. L’exemple
13.1 devrait suffire à illustrer l’objet navigator.

14.L’OBJET WINDOW

Il s’agit – comme son nom l’indique – de la fenêtre du browser en cours d’exécution.


Tous les éléments de la fenêtre sont des propriétés ou des méthodes de window.
L’objet window étant intégré dans le langage, il n’est pas nécessaire de créer une
instance de cette classe.

[Link] propriétés de window

Toutes ces propriétés correspondent à des éléments de la fenêtre ouverte. Elles


permettent de changer quelques détails sympathiques dans le visuel d’une page web. Pour y
accéder, on suit la syntaxe habituelle d’un objet.

Syntaxe :
[Link]été;

• defaultStatus : le texte par défaut affiché dans la barre d’état.


• status : le texte à afficher dans la barre d’état, prioritaire par rapport à defaultStatus.
• name : le nom de la fenêtre
• screenTop : ordonnée du point supérieur gauche de la fenêtre.
• screenLeft : abscisse du point supérieur gauche de la fenêtre.
• closed : booléen indiquant si la fenêtre est fermée.

[Link] méthodes de window

14.2.1.Généralités

L’objet window possède de nombreuses méthodes, dont certaines que nous avons déjà
vu précédemment – les boîtes de dialogue -, et qui peuvent offrir quelques atouts à votre page
web. La plupart renvoient une valeur à la variable qui appelle la fonction.

43
Syntaxe :

variable = window.méthode();

Certaines propriétés ne nécessitent pas de préciser le suffixe window. Pour


fonctionner. C’est notamment le cas des boites de dialogue.

[Link] des méthodes

• alert (‘texte’) : boite de message avec un bouton unique.


• prompt (‘texte’, ‘valeur_défaut’) : boite d’invite avec un texte informatif et une zone
de texte avec une valeur par défaut facultative.
• confirm (‘texte’) : boite de confirmation avec un texte informatif et deux boutons
« OK » et « annuler ».
• print (‘texte’) : afficher le texte dans la page.
• open (‘URL’, ‘nom’, options) : ouvre une page pop-up avec les caractéristiques
données en paramètres.
• close () : ferme la fenêtre.
• focus () : donne le focus à la page.
• blur () : enlève le focus à la page.
• moveBy (x,y) : déplacement relatif du coin supérieur gauche de la fenêtre.
• moveTo (x,y) : déplacement absolu du coin supérieur gauche de la fenêtre.
• resizeBy (x,y) : redimensionnement relatif de la fenêtre.
• resizeTo (x,y) : redimensionnement absolu de la fenêtre.
• scrollBy (x,y) : scroll relatif.
• scrollTo (x,y) : scroll absolu.
• setTimeOut (‘fonction’, temps) : déclenche une minuterie en millisecondes.
• clearTimeout(‘timer’) : suspend la minuterie.
• stopTimeOut (‘timer’) : arrête une minuterie.
• setInterval(code, délai) : exécute le code – sous forme de String - passé en paramètre à
chaque fois que le délai est écoulé.
• clearInterval(timer) : arrête la minuterie définie avec setInterval().
• stop() : arrête le chargement de la page.
• home() : ouvre la page de démarrage de l’internaute.

[Link]

Voici, pour illustrer les liste proposée ci-dessus, deux façons e faire un chronomètre.
La première utilise la méthode setInterval() – moins connue - , ce qui économise une ligne de
code. La seconde utilise la méthode setTimeout() – plus connue - qui doit être rappelée à
chaque boucle. Le reste du code est identique. Il sert à incrémenter à chaque fois les secondes,
et permet de rendre l’affichage un peu plus agréable.

Exemple 14.1 :

<HTML>
<HEAD>
<TITLE>New Document</TITLE>
<script language="Javascript">
var seconds = 0;
var minutes = 0;

44
var hours = 0;
function chrono () {
if (seconds == 60) {
seconds = 0;
minutes++;
}
if (minutes == 60) {
minutes = 0;
hours++;
}
h = hours;
m = minutes;
s = seconds;
if (s < 10) s = "0" + s;
if (m < 10) m = "0" + m;
if (h < 10) h = "0" + h;
[Link] = h + ":" + m + ":" + s;
seconds++;
}
</script>
</HEAD>
<BODY onLoad="[Link]('chrono();',1000)">
<form name="form1">
<center><input type="text" value="" name="chrono" size=6></center>
</form>
</BODY>
</HTML>

45
Exemple 14.2 :

<HTML>
<HEAD>
<TITLE>New Document</TITLE>
<script language="Javascript">
var seconds = 0;
var minutes = 0;
var hours = 0;
function chrono () {
if (seconds == 60) {
seconds = 0;
minutes++;
}
if (minutes == 60) {
minutes = 0;
hours++;
}
h = hours;
m = minutes;
s = seconds;
if (s < 10) s = "0" + s;
if (m < 10) m = "0" + m;
if (h < 10) h = "0" + h;
[Link] = h + ":" + m + ":" + s;
seconds++;
[Link]('chrono()',1000);
}
</script>
</HEAD>
<BODY onLoad="chrono();">
<form name="form1">
<center><input type="text" value="" name="chrono" size=6></center>
</form>
</BODY>
</HTML>

[Link] évènements de window

On peut rattacher certains évènements à l’objet window. Ils seront placés dans la
balise <body>, grâce au gestionnaire d’événement onEvent.

Syntaxe :

<body onEvent=”code”>

• load : fin de chargement de la page.


• unLoad : déchargement de la page.
• focus : prise de focus de la fenêtre ou d’un de ses éléments.
• blur : perte de focus de la fenêtre ou d’un de ses éléments.
• resize : redimensionnement de la fenêtre.

46
Pour plus de précisions, consultez le chapitre 7, relatif aux évènements de Javascript.

[Link] objets de window

L’objet window contient plusieurs autres objets assez réduits que je présente dans cette
partie.

Syntaxe :
variable = [Link]été ;
variable = [Link].méthode() ;

14.4.1.L’objet frames

Il s’agit d’un tableau contenant tous les frames déclarées dans la page. Il ne possède ni
propriétés ni méthodes.

Syntaxe :
variable = [Link][i] ;

14.4.2.L’objet parent

Il s’agit de la page principale, qui contient la déclaration de toutes les frames. Il


possède les mêmes attributs que l’objet window.

Syntaxe :
variable = [Link].méthode() ;
variable = [Link]été ;

14.4.3.L’objet top

Il s’agit de la page de plus haut niveau. Il possède les mêmes attributs que l’objet
window.

Syntaxe :

variable = [Link].méthode() ;
variable = [Link]été ;

14.4.4.L’objet opener

Il s’agit de la page responsable de l’ouverture de la page courante. Il possède les


mêmes attributs que l’objet window.

Syntaxe :

variable = [Link].méthode() ;
variable = [Link]été ;

47
14.4.5.L’objet history

Il s’agit de l’historique des pages consultées. Il possède une propriété et 3 méthodes.


Voici la propriété et les méthodes de cet objet, qui se déclarent selon la syntaxe objet.

Syntaxe :

variable = [Link].méthode() ;
variable = [Link]été ;

• length : le nombre d’entrées de l’historique.


• back () : permet de retourner à la page précédente.
• forward () : permet d’aller à la page suivante.
• go (numéro) : permet d’aller à la page du numéro passé en paramètre.

14.4.6.L’objet location

Il s’agit de toutes les informations contenues dans l’URL de la page en cours. Voici la
propriété et les méthodes de cet objet, qui se déclarent selon la syntaxe objet. L’objet
[Link] renvoie l’URL complète de la page en cours.

Syntaxe :
variable = [Link].méthode() ;
variable = [Link]été ;

Les propriétés suivantes renvoient des informations plus précises concernant


l’URL. Je ne précise pas à quoi elles renvoient exactement car ce n’est pas très utile dans ce
cours.
• hash
• host
• hostName
• pathName
• href
• port
• protocole
• search : renvoie la partie de l’URL située après le « ? ».

Il existe deux propriétés de l’objet [Link], qui concernent toutes deux le


rechargement de la page.
• reload () : recharge la page. Ne fonctionne pas sous tous les navigateurs.
• replace (page) : recharge la page en cours sans modifier l’historique.

14.4.7.L’objet screen
Il s’agit de toutes les informations du système d’affichage de l’utilisateur. Il y a 4
propriétés rattachées à cet objet.

Syntaxe :

variable = [Link]été ;

• availHeight : hauteur en pixels de la zone utilisable pour l’affichage.


• availWidth : largeur en pixels de la zone utilisable pour l’affichage.

48
• height : hauteur de la fenêtre en pixels - contient barres de menus, d’état, de titre et de
scrolling - .
• width : largeur de la fenêtre en pixels - contient barres de menus, d’état, de titre et de
scrolling - .
• colorDepth : Contient la profondeur de couleur en nombre de bits.

14.4.8.L’objet event

Il s’agit d’un objet propre à Microsoft Internet Explorer. Il renvoie le type


d’événement qui a eu lieu.

Syntaxe :

variable = [Link]été ;

• altKey : renvoie le code du caractère frappé au clavier.


• button : renvoie le type de clic de souris effectué.

14.4.9.L’objet external

Il s’agit d’un objet propre à Microsoft Internet Explorer. Il permet d’accéder aux
propriétés du navigateur.

Syntaxe :
variable = [Link]été ;

• AddFavorite(URL,titre): Ajoute une ligne à la liste des favoris. Demande confirmation


à l’internaute.

[Link] concret

Dans l’exemple 14.1, on a voulu afficher les attributs de la fenêtre (hauteur/largeur,


place affichable) ainsi que l’URL en cours. Il n’y a pas de commentaires car les instructions
utilisées sont détaillées ci-dessus.

Exemple 14.3 :

<script language="Javascript">
[Link] ([Link] + "<br>");
[Link] ([Link] + "<br>");
[Link] ([Link] + "<br>");
[Link] ([Link] + "<br>");
[Link] ([Link] + "<br>");
</script>

[Link]

Le but de l’exercice est de donner à l’utilisateur la possibilité de modifier la fenêtre à


l’aide de boutons. Il pourra redimensionner et revenir à la taille initiale, la déplacer et la
remettre en position initiale, lui enlever le focus, et la fermer. Lors de la fermeture,
l’utilisateur sera averti par une boite de message.

49
15.L’OBJET DOCUMENT

Il s’agit – comme son nom l’indique – de la page en cours d’exécution. Tous les
éléments de la page sont des propriétés ou des méthodes de document.
L’objet document étant intégré dans le langage, il n’est pas nécessaire de créer une
instance de cette classe.
L’objet document fait partie de l’objet window, mais il n’est pas nécessaire de préciser
le suffixe "window."

[Link] propriétés de document

Toutes ces propriétés correspondent à des éléments de la page ouverte. Cela permet
d’uniformiser et de changer quelques détails de votre page. On les utilise grâce à la syntaxe
habituelle.

Syntaxe :

[Link]été;

• bgColor : couleur du fond.


• fgColor : couleur du texte.
• linkColor : couleur des liens ni actifs ni visités.
• alinkColor : couleurs des liens actifs.
• vlinkColor : couleurs des liens visités.
• cookie : chaîne de caractères contenant les cookie.
• lastModified : date de dernière modification du fichier source
• referrer : adresse de la page par laquelle la page en cours a été appelée.
• title : titre du document, indiqué par les balises <title>…</title>. N’est modifiable
qu’avec Microsoft Internet Explorer.
• fileSize : taille de la page en octets.
• defaultCharset : jeu de caractère du document chargé.
• mimeType : type du document chargé.
• URLUnencoded : URL complète de la page, avec les caractères spéciaux encodés.
• URL : URL de la page.
• protocol : protocole de chargement de la page.
• domain : domaine de l’URL complète de la page.

Exemple 15.1 :

<script language="Javascript">
[Link] ("Taille du fichier : " + [Link] + "<br>");
[Link] ("Type mime : " + [Link] + "<br>");
[Link] ("Jeu de caractères : " + [Link] + "<br>");
[Link] ("URL décodée : " + [Link] + "<br>");
[Link] ("URL : " + [Link] + "<br>");
[Link] ("Protocole : " + [Link] + "<br>");
[Link] ("Dernière modification : " + [Link] + "<br>");
</script>

50
[Link] méthodes de document

L’objet document possède de plusieurs méthodes, dont certaines que nous avons déjà
vu précédemment.

Syntaxe :

variable = document.méthode();

Certaines propriétés ne nécessitent pas de préciser le suffixe window. Pour


fonctionner. C’est notamment le cas des boites de dialogue.

• write (‘texte’) : affiche le texte et le code HTML dans la page courante.


• getSelection () : renvoie le texte qui a été sélectionné dans la page.
• handleEvents : créé un gestionnaire d’évènement.
• captureEvents : détecte un évènement.
• open () : ouvre une nouvelle fenêtre de votre browser.
• close () : ferme le flux d’affichage externe.
• getElementById(ID) : renvoie un objet HTML en fonction de son ID. A ne pas
confondre avec le Name.
• getElementsByName(nom) : renvoie un objet HTML en fonction de son name.
• getElementsByTagName(type) : renvoie un tableau de toutes les balises HTML du
type passé en paramètre.
Exemple 15.2 :

<HTML>
<HEAD>
<TITLE>New Document</TITLE>
<script language="Javascript">
function f() {
var tab = [Link] ("input");
var result;
for (i = 0; i < [Link]; i++) {
result = result + " " + (tab[i].value);
}
[Link] = result;
}
</script>
</HEAD>
<BODY>
<form name="form1">
<input type="text" name="1" value=" "><br/>
<input type="text" name="2" value=" "><br/>
<input type="text" name="3" value=" "><br/>
<input type="text" name="4" value=" "><br/>
<input type="text" name="5" value=" "><br/>
<input type="button" value="click!" name="click" onClick="f();"><br/>
<textarea rows=4 cols=40 name="result"></textarea>
</form>
</BODY>
</HTML>

51
[Link] évènements de document

On peut rattacher certains évènements à l’objet document.

• onClick : clic de souris sur un élément de la page.


• onDblClick : le double clic de souris.
• onKeyPress : la frappe d’une touche de clavier.

Pour plus de précisions, consultez le chapitre 7, relatif aux évènements de Javascript.

[Link] objets de document

L’objet document contient plusieurs autres objets assez réduits que je présente dans
cette partie.

Syntaxe :

variable = [Link]été ;
variable = [Link].méthode() ;

Nous préciserons ici que tout élément de la page est en soit un objet de document. On
y accède selon la syntaxe ci-dessus. Il serait trop lourd de donner la liste des éléments, qui
sont répertoriés dans tout cours HTML digne de ce nom.

15.4.1.L’objet all

Il s’agit d’un tableau contenant tous les calques déclarés dans la page dans les balises
<div>…</div>. Il s’agit d’une particularité de Microsoft Internet Explorer. Il possède les
propriétés de la balise <div>.

Syntaxe :

[Link][“calque”].[Link]été = x ;

15.4.2.L’objet layers

C’est l ‘équivalent de l’objet all pour Netscape, pour les calques des balises <div> ou
<layer>. Il possède les propriétés de la balise <div>.

Syntaxe :

[Link][“calque”].[Link]été = x ;

15.4.3.L’objet forms

Il s’agit d’un tableau contenant tous les formulaires du document. Il possède une
propriété – elements[] – qui est un tableau de tous les éléments de formulaire.

Syntaxe :

[Link][i].elements[j] ;

52
15.4.4.L’objet anchors

Il s’agit d’un tableau contenant toutes les ancres – les balises <a> - de la page
courante. Il ne possède ni propriétés ni méthodes.

Syntaxe :

[Link][i] ;

15.4.5.L’objet images

Il s’agit d’un tableau contenant toutes les images – les balises <img> - de la page
courante. Il ne possède ni propriétés ni méthodes. Cela permet de faire des effets, par exemple
des rollovers, sur les images.

Syntaxe :

[Link][i] ;

15.4.6.L’objet applets

Il s’agit d’un tableau contenant toutes les applets java déclarés dans la page courante.
Il ne possède ni propriétés ni méthodes.

Syntaxe :

[Link][i] ;

15.4.7.L’objet plugins
Il s’agit du tableau plugins, qui n’est reconnu que par Netscape. Il s’agit de la liste de
tous les plugins installés. Il est aussi rattaché à l’objet navigator. Je ne préciserai pas une
nouvelle fois les propriétés. Pour cela, voyez la section [Link] objets de navigator.

15.4.8.L’objet frames

Il s’agit d’un tableau contenant tous les frames déclarées dans la page courante. Il ne
possède ni propriétés ni méthodes.

Syntaxe :

[Link][i] ;

[Link]

Vous devez créer un formulaire avec un texte, dans lequel on pourra entrer une couleur
dans une zone de texte et avec un click, on change soit la couleur du texte, soit la couleur du
fond.

53
[Link] OBJET DU NOYAU JAVASCRIPT

16.1.Généralités

Le langage JS n’est pas un langage orienté objet, mais il possède une partie des
concepts d’un langage objet comme le C++. Nous avons déjà vu précédemment ce concept10.
Certains de ces objets ne vous sont pas inconnus. Vous connaissez l’objet boolean. Nous
avons vu l’objet Array. Nous verrons dans ci-après les 4 autres objets intégrés au JS. Il s’agit
de l’objet Math, de l’objet String, de l’objet Date et de l’objet Image.

[Link] précisions

Certains de ces objets seront déjà définis, comme l’objet Math. L’objet String est
défini par une variable – il s’agit des chaînes de caractères – et n’a pas besoin de constructeur.
Les objets Date et Image nécessitent un constructeur, intégré au langage, mais qu’il faut
appeler selon la syntaxe habituelle. Certains objets Image existent déjà dans votre page, sans
que vous le sachiez. Il s’agit des balises <img>. Ces dernières n’ont donc pas besoin de faire
appel au constructeur.

17.L’OBJET MATH

[Link]

Les fonctions mathématiques usuelles ont été transcrites en langage JS à travers l’objet
Math. La plupart des fonctions s’utilisent selon la même syntaxe.

Syntaxe :
var1 = [Link](paramètres) ;

[Link] diverses

Ces fonctions étant simples, je ne fournirai pas d’exemples.

• abs(x) : renvoie la valeur absolue de x.


• ceil(x) : renvoie l’entier supérieur à x.
• floor(x) : renvoie l’entier inférieur à x.
• round(x) : renvoie l’entier le plus proche de x.
• max(x,y) : renvoie le plus grand nombre entre x et y.
• min(x,y) : renvoie le plus petit nombre entre x et y.
• pow(x,y) : renvoie le nombre x à la puissance y.
• random(x,y) : renvoie un nombre aléatoire entre 0 et 1.
• sqrt(y) : renvoie la racine carrée de x.

[Link] trigonométriques

• sin(x)
• asin(x)
• cos(x)
• acos(x)
• tan(x)
• atan(x)

54
[Link] logarithmiques

• exp(x)
• log(x)

[Link]

• [Link]
• math.LN2
• math.LN10
• math.E
• math.LOG2E
• math.LOG10E

[Link]

Si vous utilisez beaucoup l’objet math, l’écriture deviendra vite pénible. Il est possible
de ne pas avoir à écrire le mot "math" à chaque fois. Il suffit d’encadrer la zone de code par
des accolades et l’expression with(math).

Syntaxe :
with (math) {
code...
}
Exemple 17.1 :

with (Math) {
x = sqrt (238) ;
y = sin (x) ;
[Link](y) ;
}

[Link]

L’exercice est relativement simple. Il consiste à afficher la racine carrée de tous les x
entiers, compris dans [0 ; 20]. Le résultat doit être arrondi à l’entier.

18.L’OBJET STRING

18.1.Généralités

Un objet string est une chaîne de caractères. Il possède une propriété et 7 méthodes.
Cette classe permet la manipulation des caractères qui s’avère très utile en JS. Il est à
préciser que l’objet string ne se construit pas comme les autres objets. Une chaîne de caractère
est en soi un objet string.

[Link] propriété

Il s’agit de la longueur de la chaîne, "length".

Syntaxe :
variable1 = [Link] ;

55
variable = (“chaine”).length ;

Exemple 18.1 :

x = "Mon château" ;
y = [Link] ;
[Link](y) ;

[Link] méthodes

[Link] ()

Cette méthode renvoie le caractère situé à la position x fournie en paramètre. Le


numéro de la position est compris entre 0 et la longueur de la chaîne –1.

Syntaxe :
chaine1 = [Link](x) ;
chaine1 = (“chaine”).charAt(x) ;
chaine1 = charAt(chaine2,x) ;

Exemple 18.2 :

x = "Mon Château" ;
y = [Link](4) ;
[Link](y) ;

[Link] ()

Cette méthode renvoie les nombre ASCII passés en paramètres sous forme de chaîne
de caractère.

Syntaxe :
[Link](i1,i2,i3)

Exemple 18.3 :

[Link]([Link](12,105,123,104)) ;

[Link] ()

Cette méthode renvoie le code ASCII du caractère présent à la position indiquée en


paramètre.

Syntaxe :
variable = [Link](position)

Exemple 18.4 :

y = "lepape@[Link]";
[Link]([Link](6)) ;

56
[Link] ()

Cette méthode renvoie la première position d’une chaîne partielle dans une autre
chaîne en partant de gauche, à partir de la position x indiquée en paramètre. Si elle n’est pas
présente, la méthode renvoie –1. Le numéro de la position est compris entre 0 et la longueur
de la chaîne –1.

Syntaxe :
variable = [Link] (chaine_partielle, x)

Exemple 18.5 :

x = "maman" ;
y = [Link]("ma",0) ;
[Link](y) ;

[Link] ()

Cette méthode renvoie la première position d’une chaîne partielle dans une autre
chaîne en partant de gauche, à partir de la position x indiquée en paramètre. Si elle n’est pas
présente, la méthode renvoie –1. Le numéro de la position est compris entre 0 et la longueur
de la chaîne –1.

Syntaxe :
variable = [Link] (chaine_partielle, x)

Exemple 18.6 :

x = "maman" ;
y = [Link]("ma",4) ;
[Link](y) ;

[Link] ()

Cette méthode renvoie la sous-chaîne comprise entre les positions x et y indiquées en


paramètres, dans la chaîne principale.

Syntaxe :
variable = [Link] (x,y)

Exemple 18.7 :

x = "maman" ;
y = [Link](1,3) ;
[Link](y) ;

[Link] ()

Cette méthode renvoie le texte une sous-chaîne de la String de la méthode, à partir du


début et sur n caractères..

57
Syntaxe :
variable = [Link](début, n)

Exemple 18.8 :

y = "lepape@[Link]";
[Link]([Link](5,2)) ;

[Link] ()

Equivalent à substring(). La fin est facultative.

Syntaxe :
variable = [Link](début, fin)

Exemple 18.9 :

y = "lepape@[Link]";
[Link]([Link](7)) ;

[Link] ()

Cette méthode renvoie un tableau de sous-chaînes découpées selon le séparateur passé


en paramètres.

Syntaxe :
variable = [Link](séparateur)

Exemple 18.10 :

x = "lepape@[Link]" ;
y = [Link]("@") ;
[Link](y[0] + "<br>" + y[1]) ;

[Link] ()

Cette méthode renvoie la concaténation de la chaîne passée en paramètre avec celle de


la méthode.

Syntaxe :
variable = [Link](chaine2)

Exemple 18.11 :

x = "Ecrivez-moi à " ;
y = "lepape@[Link]";
z = [Link](y) ;
[Link](z) ;

58
[Link] ()

Cette méthode renvoie la chaîne avec tous les caractères en minuscules

Syntaxe :
variable = [Link]()

Exemple 18.12 :

x = "MAMAN" ;
y = [Link]() ;
[Link](y) ;

[Link] ()

Cette méthode renvoie la chaîne avec tous les caractères en majuscules

Syntaxe :
variable = [Link]()

Exemple 18.13 :

x = "Maman" ;
y = [Link]() ;
[Link](y) ;

[Link] ()

Cette méthode renvoie le texte de l’objet en y ajoutant les balises <font


color=couleur>…</font>.

Syntaxe :
variable = [Link](couleur)

Exemple 18.14 :

y = "lepape@[Link]";
[Link]([Link]("blue")) ;
[Link]([Link]("red")) ;

[Link] ()

Cette méthode renvoie le texte de l’objet en y ajoutant les balises <font


size=taille>…</font>.

Syntaxe :
variable = [Link](taille)

Exemple 18.15 :

y = "lepape@[Link]";
[Link]([Link]("16")) ;
[Link]([Link]("8")) ;

59
[Link] ()

Cette méthode renvoie le texte de l’objet en y ajoutant les balises <pre>…</pre>.

Syntaxe :
variable = [Link]()

Exemple 18.16 :

y = "lepape@[Link]";
[Link]([Link]()) ;

[Link] ()

Cette méthode renvoie le texte de l’objet en y ajoutant les balises <b>…</b>.

Syntaxe :
variable = [Link]()

Exemple 18.17 :

y = "lepape@[Link]";
[Link]([Link]()) ;

[Link] ()

Cette méthode renvoie le texte de l’objet barré.

Syntaxe :
variable = [Link]()

Exemple 18.18 :

y = "lepape@[Link]";
[Link]([Link]()) ;

[Link] ()

Cette méthode renvoie le texte de l’objet en y ajoutant les balises <sub>…</sub>.

Syntaxe :
variable = [Link]()

Exemple 18.19 :

y = "lepape@[Link]";
[Link]([Link]()) ;

[Link] ()

Cette méthode renvoie le texte de l’objet en y ajoutant les balises <big>…</big>.

60
Syntaxe :
variable = [Link]()

Exemple 18.20 :

y = "lepape@[Link]";
[Link]([Link]()) ;

[Link] ()

Cette méthode renvoie le texte de l’objet en y ajoutant les balises <sup>…</sup>.

Syntaxe :
variable = [Link]()

Exemple 18.21 :

y = "lepape@[Link]";
[Link]([Link]()) ;

[Link] ()

Cette méthode renvoie le texte de l’objet en y ajoutant les balises <blink>…</blink>.


Ne fonctionne que sous Netscape

Syntaxe :
variable = [Link]()

Exemple 18.22 :

y = "lepape@[Link]";
[Link]([Link]()) ;

Résultat

[Link] ()

Cette méthode renvoie le texte de l’objet en y ajoutant les balises <small>…</small>.

Syntaxe :
variable = [Link]()

Exemple 18.23 :

y = "lepape@[Link]";
[Link]([Link]()) ;

61
[Link] ()

Cette méthode renvoie le texte de l’objet en y ajoutant les balises <i>…</i>.

Syntaxe :
variable = [Link]()

Exemple 18.24 :

y = "lepape@[Link]";
[Link]([Link]()) ;

[Link] ()

Cette méthode renvoie le texte de l’objet en y ajoutant les balises <a href=URL
>…</a>.

Syntaxe :
variable = [Link](URL)

Exemple 18.25 :

y = "lepape@[Link]";
[Link]([Link]("[Link] ;

[Link] ()

Cette méthode crée un ancre,et renvoie le texte de l’objet en y ajoutant les balises <a
name=ancre >…</a>.

Syntaxe :
variable = [Link](ancre)

Exemple 18.26 :

y = "lepape@[Link]"
[Link]([Link]("ancre")) ;

[Link] sur les chaînes

La manipulation des chaînes demande certaines connaissances syntaxiques. Ces


dernières ont déjà été précisées dans le chapitre Structures de données, mais elles doivent être
détaillées. Elles concernent l’affectation, la concaténation, et les caractères spéciaux.

[Link]

Les chaînes de caractères se présentent sous deux formes. Elles sont soient encadrées
de quotes ‘’, soient encadrées de guillemets " ". On affecte les chaînes à leurs variables
comme toute variable.

Exemple 18.27 :

62
x = "Maman" ;
y = ‘Maman’ ;

Dans l’exemple 12.8, les chaînes x et y sont équivalentes. Elles contiennent la même
donnée.

[Link]énation

Il est possible d’ajouter des chaînes – de les mettre à la suite l’une de l’autre – grâce à
l’opérateur « + ».

Exemple 18.28 :

x = "Maman" ;
y = ‘Papa’ ;
z=x+""+y;
[Link] (z);

Dans les fonctions, comme la méthode write(), il est possible d’ajouter ces chaînes à
l’aide de l’opérateur « + » ou « , ».

Exemple 18.29 :

x = "Maman" ;
y = ‘Papa’ ;
[Link] (x + " " + y);
[Link] (x , " " , y);

[Link]ères spéciaux

Certains caractères permettent de faire un effet dans l’affichage, d’autres doivent être
précédés du caractère « \ ». Ils sont répertoriés dans le tableau suivant.

Caractère Affichage
\b touche de suppression
\f formulaire plein
\n retour à la ligne
\r appui sur la touche ENTREE
\t tabulation
\" guillemets
\' apostrophes
\\ caractère antislash
Tab. 12.1 : Caractères spéciaux

Les autres caractères spéciaux – si on peut les appeler ainsi – sont les balises HTML.
En effet, celles-ci peuvent être insérées dans les chaînes de caractère, et seront interprétées
comme des balises par le navigateur lors de l’écriture avec la méthode [Link]().
63
Exemple 18.30 :

x = "Maman" ;
y = ‘Papa’ ;
[Link] (x + "<br>" + y);

[Link]

Dans cet exercice, vous devez créer un formulaire avec un bouton et une zone de texte.
L’internaute entre une série de mots séparés par des espaces. Ensuite, on récupère ces mots, et
on les sépare par des virgules. Enfin, on les affiche à l’écran avec [Link]().

64
19.L’OBJET DATE

19.1.Généralités

La date et l’heure sont regroupées en JS dans la classe Date. On créé alors une variable
Date grâce au constructeur.

Syntaxe:
variable =new Date()

La date et l’heure en JS ne commencent qu’à partir du 1er janvier 1970, 0h 0min 0s.
Toute référence à une date antérieure donnera un résultat aléatoire. Je ne mets pas d’exemple
à chaque méthode, je ferai un exemple général et concret à la fin du chapitre.

[Link] méthodes

[Link]

Une fois notre variable Date créée, il faut lui donner les informations sur la date et
l’heure actuelle. Les fonctions suivantes remplissent la variable – qui est une chaîne – Date
avec les données courantes. Elles utilisent toutes la même syntaxe, ce sont des méthodes
objet.

Syntaxe :

variable1 =new Date()


variable2 = [Link]();

• getYear() : Retourne les 2 derniers chiffres de l’année. Il faudra donc rajouter le


préfixe "20".
• getFullYear() : Retourne la date sur 4 chiffres.
• getMonth() : Retourne le mois sous la forme d’un entier compris entre 0 et 11.
• getDate() : Retourne le jour du mois sous forme d’un entier compris entre 1 et 31.
• getDay() : Retourne le jour de la semaine sous forme d’un entier compris entre 0 et 6.
• getHours() : Retourne l’heure sous forme d’un entier compris entre 0 et 23.
• getMinutes() : Retourne les minutes sous forme d’un entier compris entre 0 et 59.
• getSeconds() : Retourne les secondes sous forme d’un entier compris entre 0 et 59.
• getMilliseconds() : retourne les millisecondes de la date. A ne pas confondre avec
getTime().

[Link]

Il est aussi possible de remplir la variable Date avec nos propres données. Les
fonctions suivantes remplissent la variable – qui est une chaîne – Date avec les données que
vous voulez. Elles utilisent toujours la même syntaxe, ce sont des méthodes objet.

Syntaxe :

variable1 = new Date()


variable2 = [Link]();

65
• setYear() : Assigne les 2 derniers chiffres de l’année, sous forme d’un entier supérieur
à 1900.
• setYear() : Assigne l’année sur 4 chiffres.
• setMonth() : Assigne le mois sous la forme d’un entier compris entre 0 et 11.
• setDate() : Assigne le jour du mois sous forme d’un entier compris entre 1 et 31.
• setDay() : Assigne le jour de la semaine sous forme d’un entier compris entre 0 et 6.
• setHours() : Assigne l’heure sous forme d’un entier compris entre 0 et 23.
• setMinutes() : Assigne les minutes sous forme d’un entier compris entre 0 et 59.
• setSeconds() : Assigne les secondes sous forme d’un entier compris entre 0 et 59.
• setMilliseconds() : assigne les millisecondes de la date. A ne pas confondre avec
setTime().

19.2.3.L’heure

L’heure est très utile en JS, elle possède donc plusieurs méthodes utiles. La syntaxe est
toujours la même.

Syntaxe :
variable1 =new Date()
variable2 = variable1.méthode();

• getTime() : Renvoie l’heure courante sous forme d’un entier représentant le nombre de
millisecondes depuis le 1er janvier 1970 00h 00min 00s.
• getTimezoneOffset() : Renvoie la différence entre l’heure locale et l’heure GMT sous
forme d’un entier en minutes.
• setTime() : Assigne l’heure courante sous forme d’un entier représentant le nombre de
millisecondes depuis le 1er janvier 1970 00h 00min 00s.
• toGMTString() : Renvoie la valeur actuelle de la variable Date en heure GMT.
• toLocaleString() : Renvoie la valeur actuelle de l’heure de la variable Date. C’est plus
rapide que de combiner getHours(), getMinutes(), et getSeconds().

[Link] concret

Le but de cet exemple est d’afficher une horloge dans une ligne de texte. Pour cela, on
utilise la méthode [Link](), qui rappelle la fonction d’affichage toute les
secondes.

Exemple 19.1 :

<HTML>
<HEAD>
<script language="Javascript">
function GetTime () { //la fonction que l’on doit appeler
var time = new Date (); // objet Date()
var hours = [Link](); //on récupère les heures
var min = [Link](); //on récupère les minutes
var sec = [Link](); //on récupère les secondes
if (hours < 10) hours = "0" + hours; //on rajoute un 0
if (min < 10) min = "0" + min; //si le chiffre est
if (sec < 10) sec = "0" + sec; //inférieur à 10
// affichage de l’heure dans une zone de texte
[Link] = hours + ":" + min + ":" + sec;

66
[Link]('GetTime()',1000); /* le timer rappelle la fonction
toutes les secondes */
}
</script>
</HEAD>
<BODY onLoad="GetTime();">
<form name="time">
Voici l'heure :
<!-- la zone de texte qui sert à l’affichage -->
<center><input type="text" name="heure" value="" size=6></center>
</form>
</BODY>
</HTML>

[Link]

[Link] de jours

Le but de l’exercice est de calculer le nombre de jours écoulés depuis l’an 2000.

[Link] GMT

Cet exercice consiste à donner l’heure GMT de deux façons différentes.

20.L’OBJET IMAGE

[Link] HTML

Il semble utile de rappeler que la balise <img> possède de nombreux attributs dont
certains qu’il est conseillé de déclarer en Javascript. Ci-dessous, la liste de ces attributs.

• src : URL, souvent relative, de l’image.


• name : nom de l’image dans la page, très important en JS.
• width : largeur de l’image affichée.
• height : hauteur de l’image affichée.
• align : alignement de l’image par rapport au texte.

Il est important de rajouter qu’une image peut servir d’ancre pour un lien hypertexte,
c’est-à-dire être placée entre les balises <a href>…</a>. Cela permet certaines astuces
d’affichage.

20.2.L’objet

La classe Image correspond à la balise HTML <img>. Son emploi est assez difficile et
ce cours ne décrira pas en détail toutes ses facettes. Il permet de manipuler les images de
façon dynamique, ce qui est impossible avec le HTML. On rappellera que les images sont
stockées dans le tableau images[] de l’objet document.

Grâce à un objet Image, on peut précharger une image et la stocker en cache,


contrairement au HTML. L’image ne sera cependant pas affichée. Elle le sera à l’aide de la
balise <img>.

67
Un objet Image est appelé selon la syntaxe objet habituelle, avec le constructeur
Image(). L’objet possède alors les propriétés de la balise HTML <img>, dont la liste figure
dans [Link] propriétés.

[Link] propriétés

[Link]

Un objet Image possède plusieurs propriétés, que l’on peut assimiler aux attributs de la
balise <img>.

Syntaxe :
variable = new Image();
[Link]été = x ;
var2 = [Link]été ;
[Link]

Il s’agit de l’URL absolue ou relative le l’image. Elle peut être modifiée. Cela permet
de charger en cache l’image lors du chargement de la page.

Exemple 20.1 :
<img src="[Link]" name="image1"
onMouseOver="[Link]='[Link]';"
onMouseOut="[Link]='[Link]';">

[Link]

C’est le nom défini par l’attribut name="…" de la balise <img>. A ne pas confondre
avec l’ID. Permet de trouver l’image dans le tableau [Link][].

Exemple 20.2 :
<img src="[Link]" name="image1" onMouseOver="alert('Adresse de
l\'image : ' + [Link]['image1'].src);">

[Link]

C’est l’ID défini par l’attribut id="…" de la balise <img>. A ne pas confondre avec le
nom. Permet de retrouver l’image grâce à la méthode [Link]().

Exemple 20.3 :
<img src="[Link]" name="image1" onMouseOver="alert('Adresse de
l\'image : ' + [Link]('image1').src);">

[Link]

Il s’agit de la largeur de l’image. Elle contient la valeur de l’attribut width de la balise


<img>. Si cet attribut n’est pas précisé, elle contient la largeur réelle de l’image. Ne peut être
modifiée.

Exemple 20.4 :
<img src="[Link]" name="image1" onMouseOver="alert('Largeur de
l\'image : ' + [Link]('image1').width);">

68
[Link]

Il s’agit de la hauteur de l’image. Elle contient la valeur de l’attribut height de la balise


<img>. Si cet attribut n’est pas précisé, elle contient la hauteur réelle de l’image. Ne peut être
modifiée.

Exemple 20.5 :
<img src="[Link]" name="image1" onMouseOver="alert('Hauteur de
l\'image : ' + [Link]('image1').height);">

[Link]

C’est un booléen qui indique si le chargement de l’image est terminé. Renvoie true si
le chargement est achevé et false dans le cas contraire.

Exemple 20.6 :
<img src="[Link]" name="image1"
onMouseOver="alert(‘chargement complété ? ' +
[Link]('image1').complete);">

[Link]

Elle contient le texte qui affiché avant la chargement de l’image et en info-bulle


lorsqu’elle est survolée. Contient la valeur de l’attribut alt="…" de la balise <img>. Ne peut
être modifiée.

Exemple 20.7 :
<img src="[Link]" name="image1" alt="Image"
onMouseOut="alert(‘alt : ' +
[Link]('image1').alt);">

[Link]

Elle contient la taille en octets de l’image. N’est accessible que lorsque le chargement
est terminé, d’où l’utilité de la propriété complete.

Exemple 20.8 :
<img src="[Link]" name="image1" alt="Image"
onMouseOver="alert(‘Octets : ' +
[Link]('image1').fileSize);">

[Link] une image

Il suffit de prendre l’élément <img> voulu dans la page et de changer sa propriété. Cet
élément est assimilé à un objet Image, faisant partie de l’objet document.

Exemple 20.9 :
[Link] = ‘[Link]’ ;

Dans ce cas précis, l’image change et [Link] est affiché dans le champ
image1. L’intérêt de créer un objet Image reste donc discutable, puisqu’on ne l’utilise pas…

69
L’objet image permet de stocker l’image en cache au moment du chargement de la
page. Il ne reste plus qu’à trouver le moyen de l’afficher… De plus, on peut créer un tableau
d’objets Image, ce qui nous facilitera les manipulations ensuite.

Exemple 20.10 :

<html>
<head>
<script language="Javascript">
var tab = new Array (4) ; //tableau
for (i = 0; i < 4; i++) {//remplissage d’images
tab[i] = new Image();
tab[i].src = i + ".gif";
}
function f() { //fonction d’affichage
for (i = 0; i < 4; i++) {
[Link][i].src = tab[i].src ;
}
}
</script>
</head>
<body>
<img name="img0"><br/>
<img name="img1"><br/>
<img name="img2"><br/>
<img name="img3"><br/>
<input type="button" name="click" value="Afficher les images"
onClick="f();"> <!—appel des l’affichage-->
</body>
</html>

L’exemple 14.3 permet de charger 5 images et des les afficher dans 5 balises <img>
différentes grâce au tableau images[].

[Link] concret : cliquer pour changer d’image

Ici, le but est de créer une page avec une image et un bouton. Lorsque l’on clique sur
le bouton, l’image change. On a au total 4 images différentes. On utilise un tableau d’objets
Image, une balise <img>, une balise <input>, et une fonction. Lorsque les 4 images ont défilé,
on recommence à la première. Pour cela, on utilise un compteur.

Exemple 20.11 :

<HTML>
<HEAD>
<TITLE>New Document</TITLE>
<script language="Javascript">
//création d'un tableau de 4 éléments
var tab_images = new Array(4);
for (i = 0; i < tab_images.length; i++) { // pour chaque élément
tab_images[i] = new Image(); /*on crée un objet Image
et on lui donne un fichier à charger */

70
tab_images[i].src = i + ".gif";
}
var nb = 0; //on initialise un compteur

function changer() { // la fonction qui sera appelée.


nb++; //incrémenter le compteur

if (nb == tab_images.length) { //si on est 4


nb = 0; //on remet à 0 le compteur
}
//affichage de l'image
[Link] = tab_images[nb].src; }
</script>
</HEAD>
<!-- la fonction est appelée au chargement de la page -->
<BODY onload="changer();">
<img src="" name="image"><br><!-- la balise <img> -->
<input type="button" name="bouton" value="cliquez" onClick="changer();"> <!-- le
bouton avec l'évènement -->
</BODY>
</HTML>

[Link]

Ici, le but est aussi de créer une page avec une image. Lorsque passe la souris sur
l’image, l’image change. Quand on « ressort » de l’image, l’image de base revient. 4 images
différentes s’afficheront en un cycle.

[Link] PROGRAMMATION MULTI-CADRES

[Link] HTML

Les frames sont un élément du langage HTML. Il s’agit du partage de la fenêtre en


plusieurs cadres où l’on pourra afficher différentes pages HTML. Les frames se déclarent
dans le fichier principal avec la balise <frameset> suivie de plusieurs balises <frame>. Il n’y a
alors pas de balise <body> dans la page principale. Pour plus de précisions, consulter un cour
HTML.

21.2.Généralités

Les frames ne sont pas très utilisées en JS, mais il est important de savoir quelques
détails en cas d’utilisation de frames au niveau HTML. Il est important, lorsque le JS est
utilisé, de préciser le nom de la frame dans la balise <frame>.

Exemple 21.1 :

<frame src="[Link]" name="cadre1">

Ce nom ne paraît pas très utile en HTML, mais il prend toute son importance en JS. Il
sera utilisé dans deux cas : la cible des liens ainsi que pour accéder à un élément d’une autre
frame de la page.

71
[Link] hypertexte

Lorsque de l’utilisation des frames, il peut s’avérer utile d’afficher une page dans une
frame différente de celle où se trouve le lien. C’est là où intervient l’attribut target de la balise
<a href…>. Il permet d’indiquer la frame où l’on veut que la page appelée s’affiche.

Syntaxe :

<a href="lien" target=”frame”>texte</a>

La référence indiquée dans l’attribut target peut être de deux types. Dans un premier
cas, il s’agit du nom de la frame déclarée dans la page principale, cas où il faut savoir ce nom.
Sinon, si on fait référence au cadre parent, on indiquera « _parent », et si on fait référence à la
fenêtre complète, on indiquera « _top ».

Exemple 21.2 :

<a href="[Link]" target=”frame1”>cliquez ici</a>


<a href="[Link]" target=”_parent”>ou ici</a>

[Link]ès aux éléments des frames

Lorsque de l’utilisation des frames, il est souvent nécessaire en JS d’accéder aux


éléments des autres frames. L’objet window – que nous avons vu précédemment – nous
fournit de quoi le faire. Il contient l’objet parent, qui possède les mêmes propriétés que lui.
21.4.1.L’objet frames[]

La première façon d’accéder aux éléments d’une autre frame se fait bien sûr par le
tableau frames[] – propriété de parent – dont le numéro des frames est attribué dans l’ordre de
déclaration de celles-ci. On accède ensuite à chaque élément de la frame ainsi qu’à ses
propriétés et méthodes.

Syntaxe :

[Link][i].[Link]été
[Link][i].objet.méthode()

Exemple 21.3 :

[Link][1].[Link] = "get";

Exemple 21.4 :

[Link][1].[Link] = "Click";

Dans l’exemple 20.4, on accède à la valeur du bouton appelé « Button1 » du


formulaire nommé « form1 ».

[Link] nom de la frame

L’autre façon d’accéder aux éléments d’une frame est d’utiliser son nom. Ce sera alors
un objet de parent. Il faut donc prendre soin à donner un nom aux frames lors de leur

72
déclaration. On accède ensuite à chaque élément de la frame ainsi qu’à ses propriétés et
méthodes.

Syntaxe :

[Link]été
[Link].méthode()

Exemple 21.5 :

[Link] = "get";

Exemple 21.6 :

[Link] = "Click";

[Link] concret
L’exemple 21.7 permet de faire un compteur de secondes impair sur une frame et pair
sur l’autre.

Exemple 21.7 :

Exemple [Link]

<HTML>
<HEAD>
<TITLE>New Document</TITLE>
<script language="Javascript">
</script>
</HEAD>
<body>
<form name="form1">
<center><input type="text" name="out1" value="00:00:00"></center>
</form>
</body>
</HTML>

Exemple [Link]

<HTML>
<HEAD>
<TITLE>New Document</TITLE>
<script language="Javascript">
</script>
</HEAD>
<body>
<form name="form2">
<center><input type="text" name="out2" value="00:00:00"></center>
</form>
</body>
</HTML>

73
Exemple [Link]

<HTML>
<HEAD>
<TITLE>New Document</TITLE>
<script language="Javascript">
var sec = 0;
var min = 0;
var hrs = 0;
var test = 1;
function f() {
sec++;
if (sec == 60) {
sec = 0;
min++;
}
if (min == 60) {
min = 0;
hrs++;
}
h = hrs;
m = min;
s = sec;
if (h < 10) h = "0" + h;
if (m < 10) m = "0" + m;
if (s < 10) s = "0" + s;
if (test == 1) {
[Link] = h + ":" + m + ":" + s;
test = 2;
}
else if (test == 2) {
[Link] = h + ":" + m + ":" + s;
test = 1;
}
[Link]('f();',1000);
}
</script>
</HEAD>
<frameset cols="50%,50%" onLoad="f();">
<frame src="exemple [Link]" name="frame1">
<frame src="exemple [Link]" name="frame2">
</frameset>
</HTML>

[Link]

Votre exercice comporte 2 frames, avec chacune un bouton. Chaque clic sur un bouton
incrémente la valeur de l’autre bouton.

[Link] COOKIES

[Link]ésentation

74
En JS, il est possible de travailler avec les cookies. Etant donné l’absence de gestion
d’écriture/lecture de fichier, les cookies sont le seul moyen de stocker des informations
permanentes sur la machine de l’utilisateur. Ces dernières pourront être récupérées plus tard et
réutilisées. Cela permet de compter le nombre de visites de l’internaute, de créer une liste de
préférence de navigation sur le site, de conserver le login et le password afin de se connecter
directement à un compte… Les applications des cookies sont nombreuses.
Le seul risque de cette méthode est la suppression ou le refus des cookies par
l’utilisateur.
Le cookie en lui-même se présente sous la forme d’une chaîne de caractère qui
contient des informations concaténées : l’information que l’on veut conserver, la date
d’expiration, l’auteur – path -, le nom de domaine, la sécurisation.

[Link]éer un cookie

On crée un cookie avec l’objet cookie de l’objet document. Il s’agit d’une chaîne de
caractère dans laquelle on indique les informations que l’on veut.

Syntaxe :
[Link] = "informations"

Dans les informations, il y a tout d’abord la chaîne que l’on souhaite conserver.
Ensuite, on met la date d’expiration, le path, le nom de domaine, et – si besoin – la fait que le
cookie soit protégé. Seuls les deux premiers champs sont obligatoires.

Syntaxe :

[Link] = "variable = contenu ; expires = date ; path = nom ; domain =


domaine ; secure = true/false" ;

Il semble utile de décrire chaque champ indiqué ci-dessus. Si la chaîne est mal écrite,
le cookie ne sera pas utilisable, et deviendra par conséquent inutile.

• Le champ information : il s’agit de ce que vous voulez stocker dans le cookie. Il faut
définir un nom à la variable et lui affecter une valeur, un contenu. Comme on peut le
voir ci-dessus, les champs sont séparés par des points-virgule, il ne faut donc pas
insérer des « ; » dans le contenu.
• expires : contient la date d’expiration, à laquelle le cookie sera détruit. La valeur est en
secondes. Le plus simple consiste à utiliser un objet Date.
• path : le chemin de la page qui a créé le cookie.
• domain : le domaine de la page qui a créé le cookie.
• secure : booléen qui indique si le cookie doit utiliser le protocole HTTP (false) ou le
protocole sécurisé HTTPS (true).

Exemple 22.1 :

[Link] = "visite=1; expires=31/12/2004; path=le-


[Link]/[Link]; secure=true";

Dans l’exemple 9.1, il s’agit d’un cookie créé par lepape, qui expire le 31/12/2004,
auquel on peut accéder uniquement par un échange sécurisé, et qui compte le nombre de
visites.

75
22.3.Récupérer un cookie

La récupération d’un cookie est plus complexe, mais elle est essentielle, car sinon le
cookie est inutile. Le but est de trouver le type d’information que l’on cherche, et ensuite de
lire la valeur. La maîtrise de la classe String est obligatoire pour ce genre d’exercice. Cette
partie explique pas à pas la manière pour récupérer un cookie. On commence par mettre tous
les cookies dans une variable.

Syntaxe :
variable = [Link] ;

Ensuite, on cherche le nom de la « variable » dans la chaîne du cookie. Ensuite, on


récupère ce qui est situé entre le signe « = » et le « ; ». Cela semble simple, mais il faut
utiliser les méthodes des objets String et utiliser des instructions logiques. Ci-dessous,
l’exemple 9.2 montre en détail comment récupérer un cookie.

Exemple 22.2 :

//création du cookie
[Link] = "visite=1;expires=31/12/2004";
//variable à trouver
var variable_a_trouver = "visite" ;
//on rajoute le signe =
variable_a_trouver = variable_a_trouver + "=" ;
//on récupère le cookie
var chaine = [Link] ; var longueur = variable_a_trouver.length ;
//on récupère la longueur à trouver
var resultat ;
//si le cookie n’est pas vide, on commence à chercher.
if ([Link] > 0) {
//on cherche la position du début de la variable
var debut = [Link](chaine_a_trouver,0);
//si on a trouvé cette position, on continue
if (debut >=0) {
var fin ;
/* on rajoute la longueur de la variable, pour arriver au début du contenu */
debut = debut + longueur ;
//on cherche la fin du contenu, c’est-à-dire le premier « ; »
fin = [Link](";", debut) ;
//si on trouve la position du point-virgule
if (fin>=0) {
//on récupère la chaine située entre le “=” et le “;”
resultat = unescape([Link](debut,fin) ;
}
// si il n’y a pas de “;”, c’est que c’est la fin de la chaîne
else {
/* on récupère la chaine située après le “=” la fin de la chaîne */
resultat = unescape([Link](debut,[Link]) ;
}
}

76
Cet exemple n’est qu’une manière parmi d’autres. On peut imaginer quantités de
façons, mais celle-ci est sûrement la plus simple. Cela peut d’ailleurs constituer un exercice.

[Link] un cookie

Modifier un cookie est aussi simple que de le créer. En réalité, il suffit de le recréer
avec un contenu différent et une date actualisée.

[Link] un cookie

Pour supprimer un cookie, il faut tout simplement le recréer, avec la même valeur pour
éviter de se compliquer les choses, et lui donner une date d’expiration passée. Sinon, il suffit
d’attendre sa date d‘expiration, ce qui n’est pas toujours satisfaisant.

[Link] PROGRAMMATION OBJET

[Link]ésentation

Bien que le Javascript ne soit pas un langage orienté objet, il donne la possibilité de
créer ses propres objets. Ce chapitre s’adresse à des programmeurs possédant un niveau
correct11 car la programmation objet est un point assez difficile.

Les programmeurs C++ seront étonnés de voir que les classes JS sont très simplifiées
comparées à celles du C++. Elles ne demandent pas une définition complète de la classe, mais
il suffit de déclarer la fonction constructeur.

23.2.Déclaration d’une classe

Contrairement au C++ - qui demande une déclaration détaillée – déclarer une classe en
JS se fait simplement en déclarant la fonction constructeur de classe. On déclare à l’intérieur
les propriétés à l’aide de l’objet this. On retrouve l’objet this découvert précédemment.
Comme on l’a vu, il désigne l’objet en cours.

Syntaxe :
function nom_classe ( paramètres ) {
[Link]été = paramètre1 ;
}

On déclare l’objet avec la syntaxe habituelle et le mot-clé new. Le nome de la classe


est en général le type d’objet avec une majuscule.

Exemple 23.1 :

function Eleve (Age,Sexe,Ville) {


[Link] = Age ;
[Link] = Sexe ;
[Link] = Ville ;
}

var Laurent = new Eleve(17,’M’,‘Grenoble’) ;

77
[Link] de méthodes

Il est bien entendu possible de déclarer et utiliser des méthodes. Pour cela, il faut
déclarer une fonction indépendante de la classe. Ensuite, on déclare la fonction à l’intérieur du
constructeur, en l’affectant à une méthode. Il faut faire attention lors de cette déclaration, car
il ne faut pas mettre les parenthèses des fonctions12 !

Syntaxe :
function nom_classe () {
this.méthode = fonction ;
}
Exemple 23.2 :

function Eleve (Nom,Age) {


[Link] = Age ;
[Link] = Nom ;
[Link] = affich_infos;
}
function affich_infos () {
[Link] ([Link] + " a " + [Link] + " ans.");
}
var Laurent = new Eleve(17, ‘Laurent’) ;
[Link]() ;

Il est possible de simplifier l’écriture lorsqu’il y a beaucoup de propriétés, grâce à


l’utilisation de with (objet) { }. Cela ne fonctionne qu’à l’intérieur des méthodes, et non dans
le constructeur.

Exemple 23.3 :

function Eleve (Nom,Age) {


age = Age ;
nom = Nom ;
affich = affich_infos;
}
function affich_infos () {
with (this) {
[Link] (nom + " a " + age + " ans.");
}
}
var Laurent = new Eleve(17, ‘Laurent’) ;
[Link]() ;

23.4. Exercice

Dans cet exercice, le but est de demander 3 informations à l’utilisateur (nom, age,
ville) à l’aide d’une boite de dialogue. On regroupe ces informations à l’aide d’un objet –
d’une classe crée auparavant – puis on utilise une méthode pour l’affichage dans une zone de
texte.

78
[Link] EXPRESSION REGULIERES

[Link]ésentation

Ce chapitre s’adresse à des programmeurs avertis, qui voudront bâtir un site


dynamique d’un aspect assez évolué. Les expressions régulières sont assez compliquées à
comprendre, et leur utilisation demande une connaissance sans failles de l’objet String.

24.2.Définition

Les expressions régulières existent dans la plupart des langages de programmation,


mais sont peu connues du fait de leur complexité. Elles permettent de réaliser des traitements
sur les chaînes de caractères. Ces traitements sont de l’ordre de la recherche de caractères, de
l’extraction de sous-chaînes… beaucoup d’autres traitements existent qu’il revient à vous
d’imaginer et de créer. En réalité, une expression régulière possède un motif, qui est une suite
de caractères ordonnés selon un ordre, un nombre d’apparitions, une non-apparition…

Une expression régulière est avant tout un objet RegExp. Comme tout objet, il se
déclare ainsi :

Syntaxe :
var reg = RegExp (pattern, option);

Comme vous l’avez sûrement remarqué, pour la première fois, il faut fournir des
paramètres au constructeur. Ces paramètres concernent l’expression régulière que vous
utilisez. Le pattern est le motif de l’expression. L’option est une chaîne de caractères, qui –
comme son nom l’indique – contient les options de l’expression régulière. Nous allons voir
leur constitution ci-après.

Il existe aussi une autre façon de déclarer une expression régulière. Elle est moins
utilisée et surtout moins claire.

Syntaxe :
var reg = /pattern/option;

Les deux notations sont absolument équivalentes mais la première est plus explicite,
donc conseillée.

[Link]ètres d’une expression régulière

Les exemples sont regroupés dans le [Link] car ils se doivent de contenir les
deux paramètres.

24.3.1.L’option

La chaîne option peut prendre 4 valeurs. La première est la chaîne vide "", qui signifie
l’absence d’option. Les 3 autres valeurs sont détaillées ci-dessous.

• "g" : la recherche est globale – sur toute la chaîne -.


• "i" : ne pas tenir compte de casse – majuscules/minuscules- .
• "gi" : les deux options réunies

79
[Link] pattern

Cette partie est la plus délicate. Le pattern est assez complexe et sa compréhension
peut être difficile. Il faut savoir que le pattern correspond aux caractères que vous cherchez –
pour une raison ou une autre – dans une chaîne.

La chaîne pattern est extensible à l’infini. Le choix de ce qu’elle contient vous


appartient. Il s’agit du motif de la chaîne, c’est-à-dire des caractères que vous choisirez
d’inclure ou d’exclure de votre recherche. Cette chaîne pattern contient des caractères
spéciaux concaténés. Ces caractères spéciaux concernent le motif lui-même, le caractère à
rechercher, le nombre d’occurrences, le groupe de caractères cherché… Leur liste se trouve
dans le Tab.24.1.

Motif Signification
^ Début du pattern – de la chaîne.
$ Fin du pattern. Interdit tout caractère après.
. N’importe quel caractère.
a|b Caractère a OU b.
* Caractère précédent présent 0 à x fois.
+ Caractère précédent présent 1 à x fois.
? Caractère précédent présent 0 à 1 fois.
{x} Caractère précédent présent x fois.
{x,} Caractère précédent présent au moins x fois.
{x,y} Caractère précédent présent au entre x et y fois.
[abc] Groupe de caractères : n’importe lequel contenu entre les crochets.
[a-z] N’importe quel caractère alphabétique.
[^a-z] Aucun caractère alphabétique.
\\ Caractère « \ ».
\d Tous les chiffres – équivalent de [0-9] - .
\D Aucun chiffre – équivalent de [^0-9] -.
\b Limites des mots (espace, tab, …).
\s Tous les caractères d’espacements – équivalent de [\v\r\n\t\f] -.
\S Aucun caractère d’espacements – équivalent de [^\v\r\n\t\f] -.
Tous les caractères alphanumériques dont « _ » – équivalent de [A-Za-
\w
z0-9_] -.
\W Aucun caractère alphanumérique – équivalent de [^A-Za-z0-9_] -.
Tab.24.1 : Motifs des expressions régulières.

Les différents motifs ne sont pas séparés. On les met les uns à la suite des autres, sans
espacements.
80
Il est à préciser que l’on peut très bien mettre une variable ou un mot entre guillemets -
sans mise en forme avec ^ $ - comme argument pattern.

[Link]

Voici différents exemples de déclaration d’objet RegExp. Ces exemples ne sont pas
très complexes, ils donnent simplement une idée de la construction des motifs. Le pattern est
plus détaillé que les options qui ne sont pas très importantes. Chaque exemple est commenté,
pour bien comprendre le but du motif.

Exemple 24.1 :

var exp = new RegExp("^[A-Za-z0-9]{4,}$","i") ;

L’exemple 24.1 présente la recherche d’une chaîne de au moins 4 caractères


alphanumériques. [A-Za-z0-9] désigne les caractères alphanumériques, et {4,} désigne 4 fois
ou plus. Les caractères sont au choix majuscules ou minuscules.

Exemple 24.2:

var exp = /^[A-Za-z0-9]{4,}$/i ;

L’exemple 24.2 est équivalent à l’exemple 24.1, mais il utilise l’autre notation.

Exemple 24.3 :

var exp = new RegExp (“^[A-Za-z0-9]+[A-Za-z0-9\.\-_]*@[A-Za-z0-9\-_]+\.[A-Za-


z0-9\.\-_]{1,}$”,””);

L’exemple 24.2 présente la vérification d’une adresse e-mail. Elle doit commencer par
au moins un caractère alphanumérique : [A-Za-z0-9]+ . Ensuite elle peut comporter autant de
caractères alphanumériques que l’on veut, plus le point, le tiret et l’underscore : [A-Za-z0-
9\.\-_]*. Tout cela doit être suivi d’un @ : @. Ensuite, il peut y avoir n’importe quel nombre
de caractères alphanumériques, plus le point, le tiret et l’underscore : [A-Za-z0-9\-_]+. Cela
doit être suivi d’un point : \. . Ce dernier doit être suivi d’au moins deux caractères
alphanumériques dont le point et le tiret : [A-Za-z0-9\.\-_]{1,} . Il n’y a aucune option.

Ces exemples ne traitent que de la création de l’objet RegExp. Ce dernier est bien
entendu inutile si on ne l’utilise pas ensuite. C’est le sujet de la partie suivante.

[Link] d’une expression régulière

[Link] méthode de l’objet RegExp

Il existe trois méthodes de l’objet RegExp : test(), exec() et compile(). Elles s’utilisent
selon la syntaxe objet habituelle. La première prend en paramètre la chaîne à tester selon le
motif de l’expression régulière. Elle renvoie un booléen qui indique si la chaîne correspond au
motif ou non. La deuxième méthode prend aussi la chaîne à tester en paramètre. Elle renvoie
un tableau des occurrences du motif à tester. La dernière permet de modifier le motif de
l’expression régulière, sans en créer un nouveau.

81
Exemple 24.3 :

adresse = prompt ("Votre mail ?","mail@[Link]") ;


var exp = new RegExp (“^[A-Za-z0-9]+[A-Za-z0-9\.\-_]*@[A-Za-z0-9\-_]+\.[A-Za-
z0-9\.\-_]{1,}$”,””);
[Link] ( [Link](adresse) );

L’exemple 24.3 propose de tester la correction de votre mail. On retrouve le motif de


l’exemple 24.2. La méthode test() est appliquée à l’adresse e-mail. Le reste vous est – ou
devrait vous être – familier.

[Link] méthode de l’objet String

Les méthodes de l’objet String vont aussi aider à la manipulation des expressions
régulières. Nous introduirons ici 3 nouvelles méthodes de l’objet String13. A ces trois
méthodes, nous rajouterons la plupart des méthodes String.

• search() : trouver les occurrences répondant aux critères du motif.


• replace () : trouver remplacer les occurrences répondant aux critères du motif.
• match() : trouver les occurrences répondant aux critères du motif.

Ces trois méthodes prennent en paramètre un objet RegExp. Voici la syntaxe


correspondante ci-après.

Syntaxe :
var reg = RegExp (pattern, option);
chaîne.méthode(reg);

Il est à noter que la méthode split() possède une syntaxe similaire. De plus, il est
possible d’indiquer simplement le motif, avec la notation peu utilisée des slash, comme
paramètre.

Syntaxe :
chaîne.méthode(/pattern/option);

Les méthodes split() et match() renvoient chacune un tableau de toutes les occurrences
trouvées.

Exemple 24.4 :

var nom = prompt('Votre nom?\nMettez les accents…','nom') ;


nom = [Link] (/[éèêë]/g,"e") ;
nom = [Link] (/[àäâ]/g,"a") ;
nom = [Link] (/[üûù]/g,"u") ;
nom = [Link] (/[òöô]/g,"o") ;
nom = [Link] (/[ìïî]/g,"i") ;
alert(nom) ;

L’exemple 24.4 propose de supprimer les accents d’une chaîne. On remplace tout
simplement les lettres accentuées par la lettre sans accent.

82
[Link] concret

Ci-dessous est proposé un exemple dans lequel vous entrez une suite de mots séparés
par des caractères de ponctuation. En cliquant sur un bouton, la liste de tous les noms est
affichée. De plus, deux méthodes sont proposées. Cet exemple vous montre aussi comment
intégrer le traitement au code avec une fonction.

Exemple 24.5 :

<HTML>
<HEAD>
<TITLE>New Document</TITLE>
<script language="Javascript">
function TraitBySplit() {
var chaine = [Link]; //récupération de la chaine
var exp = new RegExp ('[.,;:/!? ]',"g"); //motif avec la ponctuation
tab = [Link](exp); //séparation de la chaine
var result = "Voici les noms :"; //affichage
for (i = 0 ; i < [Link] ; i++) {
result = result + "\n" + tab[i] ;
}
[Link] = result;
}
function TraitByMatch() {
var chaine = [Link];//récupération de la chaine
//motif avec les lettres
var exp = new RegExp ('[A-Za-zìïîòöôüûùàäâéèêë]+',"g");
tab = [Link](exp); //séparation de la chaine
var result = "Voici les noms :"; //affichage
for (i = 0 ; i < [Link] ; i++) {
result = result + "\n" + tab[i] ;
}
[Link] = result;
}
</script>
</HEAD>
<BODY>
<center>
<form name="form1">
<textarea name="input" rows=5 cols=50>Entrez une suite de noms séparés indifféremment
par les signes de ponctuation .,;:/!? et espace</textarea><br/>
<input type="button" name="match" value="Avec match()"
onClick="TraitByMatch();">&nbsp;
<input type="button" name="split" value="Avec split()" onClick="TraitBySplit();"><br/>
<textarea name="output" rows=5 cols=50>Résultat</textarea><br/>
</form>
</center>
</BODY>
</HTML>

83
[Link]

Faites un formulaire avec 3 lignes de texte et un bouton. Dans les lignes de texte,
l’internaute entre son adresse, code postal et ville. En cliquant sur le bouton, on teste leur
validité.

[Link] ET PROPRIÉTÉS

[Link]ésentation

Ce chapitre présente – un peu tardivement – les fonctions intégrées au langage, et ne


dépendant d’aucun objet. On verra aussi les méthodes et propriétés que l’on peut associer à
tous les objets. Ce chapitre arrive – j’en conviens – un peu tard, car j’avais omis ce sujet dans
mon plan. Je le rajoute donc ici.

[Link] fonctions du langage

[Link]()

Cette fonction encode les caractères spéciaux d’une chaîne, selon le code %xx, et
retourne cette chaîne encodée.

Syntaxe :

chaine1 = escape (chaine2)

Exemple 25.1 :

var chaine = "Voici des caractères spéciaux !" ;


[Link]( escape(chaine) ) ;

[Link]()

Cette fonction décode les caractères spéciaux codé par escape(), et retourne cette
chaîne encodée.

Syntaxe :

chaine1 = escape (chaine2)

Exemple 25.2 :

var chaine = "Voici des caractères spéciaux !" ;


var chaine2 = escape(chaine) ;
[Link]( unescape(chaine2) ) ;

[Link] ()

Cette fonction convertit une chaîne passée en paramètre en nombre décimal. Renvoie
NaN si la conversion est impossible.

84
Syntaxe :

decimal = parseFloat (chaine)

Exemple 25.3 :

var chaine = "Voici des caractères spéciaux !" ;


var chaine2 = "35.7" ;
[Link]( parseFloat(chaine) + "<br/>" ) ;
[Link]( parseFloat(chaine2) ) ;

[Link] ()

Cette fonction convertit une chaîne passée en paramètre en nombre entier. Renvoie
NaN si la conversion est impossible. Le paramètre facultatif base permet de faire une
conversion en une autre base que décimale.

Syntaxe :

decimal = parseInt (chaine, base)

Exemple 25.4 :

var chaine = "35.7" ;


[Link]( parseInt(chaine) + "<br/>" ) ;
[Link]( parseInt(chaine, 8) ) ;

[Link] ()

Cette fonction renvoie true si le nombre est fini, sinon, elle renvoie false.

Syntaxe :

booleen = isFinite (nombre)

Exemple 25.5 :

var chaine = "35.7" ;


var chaine2 = "Math";
[Link]( isFinite(chaine) + "<br/>") ;
[Link]( isFinite(chaine2) ) ;

[Link] ()

Cette fonction renvoie true si la chaîne n’est pas un nombre, sinon, elle renvoie false.

Syntaxe :

booleen = isNaN (chaine)

85
Exemple 25.6 :

var chaine = "35.7" ;


var chaine2 = "Math";
[Link]( isNaN(chaine) + "<br/>") ;
[Link]( isNaN(chaine2) ) ;

25.3.Méthodes et propriétés des objets

Les objets de Javascript ou que vous avez créés possèdent deux propriétés et deux
méthodes en commun. Elles permettent de manipuler ces objets et de connaître certaines de
leur caractéristiques.

[Link]

Cette propriété permet de rajouter une propriété ou une méthode à un objet déjà
existant, que vous avez créé ou qui existe dans JS. On l’utilise selon la syntaxe suivante :

Syntaxe :

[Link] = valeur ;

L’exemple 25.7 rajoute une propriété et une méthode à l’objet Array.

Exemple 25.7 :

var tab = new Array(5);


for (i = 0; i < 5; i++) tab[i] = i+1;

[Link] = null; // on rajoute un commentaire


[Link] = "Tableau de 5 chiffres";

function FirstElement () { /* fonction retournant le premier élément */


return this[0];
}
[Link] = FirstElement;
[Link] ([Link] + " : premier élément : " +
[Link]());

[Link]

Cette propriété renvoie le constructeur de l’objet.

Syntaxe :

variable = [Link] ;

Exemple 25.8 :

var tab = new Array(5);


var s = "string";
var d = new Date ()
var e = new RegExp();

86
[Link] ("Constructeur Array : " + [Link] + "<br/>");
[Link] ("Constructeur String : " + [Link] + "<br/>");
[Link] ("Constructeur Date : " + [Link] + "<br/>");
[Link] ("Constructeur RegExp : " + [Link] + "<br/>");

[Link]()

Cette méthode renvoie tout simplement la valeur de l’objet.

Syntaxe :

variable = [Link] ;

Exemple 25.9 :

var tab = new Array(5);


for (i = 0; i < 5; i++) tab[i] = i + 1;
var s = "string";
[Link] ("Valeur du Tableau : " + [Link]() + "<br/>");
[Link] ("Valeur de la Chaîne : " + [Link]() + "<br/>");

[Link]()

Cette méthode retourne la description de l’objet.

Syntaxe :

variable = [Link] ;

Exemple 25.9 :

var tab = new Array(5);


for (i = 0; i < 5; i++) tab[i] = i + 1;
var s = "string";
[Link] ("Description du Tableau : " + [Link]() + "<br/>");
[Link] ("Description de la Chaîne : " + [Link]() + "<br/>");

87

Vous aimerez peut-être aussi