Découvrir JavaScript
Le JavaScript est un langage de programmation mis au point par
Netscape pour le développement d'applications internet.
Le navigateur Netscape depuis sa version 2 sait interpréter
le JavaScript. Il en est de même d'internet Explorer depuis
sa version 3.
Bien que langage "orienté objet" JavaScript est un langage
aisé à mettre en uvre. Seule difficulté
pour un utilisateur du HTML, en JavaScript comme en C ou Java,
majuscules et minuscules sont distinguées.
Le code JavaScript est inséré directement dans
la page HTML entre les balise <SCRIPT> et </SCRIPT>
. Il peut aussi être intégré à certaines
balises HTML. Il est lu, interprété et exécuté
par le navigateur lors du chargement de la page ou bien lors d'un
événement généré par l'utilisateur.
Un script peut être placé n'importe où dans
la page HTML. On utilisera souvent la balise <HEAD> afin
de s'assurer que le script est lu et exécuté dès
le chargement de la page.
Les principes
Le principe de la programmation en JavaScript pourrait être
résumé comme suit : Par un langage de
scripts on accède aux propriétés des différents
objets connus du navigateur afin de lire ou modifier ces propriétés.
voici un premier exemple simple où l'on accède
pour le modifier, au contenu de la barre d'état (status)
de la fenêtre (window) du navigateur :
<HTML>
<HEAD>
</HEAD>
<BODY>
<FORM>
<INPUT type="button" value="clic"
onClick="window.status='regardez
en bas' ">
</FORM>
</BODY>
</HTML>
Ce script provoque l'affichage du texte entre apostrophes dans
la barre d'état du navigateur. onClick est appelé
un gestionnaire d'événement.
Ce gestionnaire est intégré à la balise
qui défini un bouton dans un formulaire.
Notez l'utilisation des apostrophes délimitant la chaîne
à afficher à l'intérieur d'une instruction
JavaScript elle-même placée entre double guillemets.
Dans l'exemple suivant, on modifie une image du document simplement
en affectant une nouvelle valeur à l'attribut SRC=. et
ce lorsque l'utilisateur fait glisser la souris au dessus de l'image.
L'événement qui déclenche l'exécution
du script (le mouvement de souris) est géré par
le gestionnaire onMouseover.
Le gestionnaire onMouseover n'est efficace que lorsque la souris
passe au dessus d'un hyperlien. il faut donc transformer l'image
en "lien vers rien". On utilise A HREF="#"
<HTML>
<HEAD>
</HEAD>
<BODY>
<A HREF="#" onMouseover="
document.MON_IMAGE.src='Blanc.gif' " onMouseout=" document.MON_IMAGE.src='Noir.gif'
">
<IMG
src="Noir.gif" name="MON_IMAGE" border=0>
</A>
</BODY>
</HTML>
Ce script provoque un changement immédiat d'image lors
du passage de la souris au dessus de la zone.
Pour nous francophones, il faut lire à l'envers la drôle
d'appellation utilisée pour accéder à l'objet
: document.MON_IMAGE.src, cela signifie : la propriété
source (SRC) de l'image MON_IMAGE faisant partie du document (de
la fenêtre active).
Pour accéder facilement à la sources (SRC) de l'image,
nous avons pris soin de la nommer (MON_IMAGE) au préalable.
Pour modifier maintenant le contenu (propriété
value) d'un zone de texte dans un formulaire :
<HTML>
<HEAD>
</HEAD>
<BODY>
<FORM>
<INPUT type="text" name="MA_ZONE_DE_TEXTE" value="je suis
vide" >
<br>
<INPUT type="button" value="clic" onClick="document.MON_FORMULAIRE.MA_
ZONE_DE_TEXTE.value='regardez ici' " >
</FORM>
</BODY>
</HTML>
Encore une fois nous avons pu accéder à la propriété
que nous voulions modifier par un chemin arborescent :
La fenêtre (l'objet window qui n'a pas besoin d'être
explicitement mentionné : il ne peut s'agir que de lui
! ) contient un document qui contient au moins un formulaire ( MON_FORMULAIRE )
qui possède au moins une zone de saisie ( nommée
MA_ZONE_DE_TEXTE ) qui elle-même a une valeur (value).
Pour accéder à ces objets et à leurs propriétés
nous les avons baptisés à leur génération.
Nous n'y étions pas obligé toutefois. Le navigateur
tient à jour en effet une liste pour chaque type d'objet.
document.forms[0] désigne ainsi le premier formulaire
du document (l'index commence à zéro).
document.forms[3] fait référence au 4ème
formulaire du document, etc.
Au sein d'un formulaire maintenant les éléments
peuvent-être désignés par ordre d'apparition
:
MON_FORMULAIRE.elements[0] désigne ainsi le premier
objet du formulaire nommé MON_FORMULAIRE.
C'est pourquoi, pour accéder au contenu de la zone de
texte, nous aurions pu écrire aussi :
document.forms[0].elements[0].value
Toutes les propriétés de tous les objets ne peuvent
pas être modifiées et certaines pas tout le temps
mais toujours la manière d'y accéder restera la
même. Voici un script permettant de modifier la couleur
de fond du document :
<HTML>
<HEAD>
</HEAD>
<BODY bgcolor="#000000">
<FORM>
<INPUT type="button" value="changer La Couleur ?" onClick=<document.bgColor='#ffcc33'
">
</FORM>
</BODY>
</HTML>
Notez bien la différence entre l'option bgcolor intégrée
à la balise BODY ( c'est du HTML ) et la propriété
bgColor de l'objet document ( c'est du JavaScript et la casse
est impérative ). Bien sûr, il s'agit bien de
la même chose.
Les fonctions
Un fonction est un ensemble d'instructions que l'on regroupe
afin de pouvoir les mettre en uvre toutes ensembles quand
on en a besoin, sans avoir à les réécrire
à chaque fois.
On définit une fonction à l'aide du mot clé
function. Il est préférable que cette définition
soit effectuée dans la balise HEAD afin que le navigateur
la prenne en compte dès le chargement de la page.
Voici un exemple de déclaration de fonction et son appel :
<HTML>
<HEAD>
<SCRIPT LANGUAGE="JavaScript">
function disBonjour()
{
alert ( "Hello world !" )
}
</SCRIPT>
</HEAD>
<BODY>
<FORM>
<INPUT type="button" value="clic"
onClick="disBonjour()">
<FORM>
</BODY>
</HTML>
La fonction appelée lors du clic, le navigateur affiche
un message d'alerte reprenant la chaîne "Hello world !"
Toujours la définition d'une fonction se fera de la façon
suivante : d'abord le mot clé function puis le nom
de la fonction suivi de ses arguments entre parenthèses.
Enfin les instructions JavaScript qui constituent la fonction,
placées entre accolades.
voici un autre exemple de fonction :
function changeLeDocument ( NouvelleCouleur, QuelleImage, NouvelleImage
)
{
document.bgColor = NouvelleCouleur;
document. QuelleImage.src = NouvelleImage;
}
Lors de l'appel de la fonction changeLeDocument, il convient
de lui passer trois arguments : NouvelleCouleur qui défini
la couleur de fond de remplacement ( attention à la
différence majuscule minuscules lorsque vous saisissez
la propriété bgColor ! ), QuelleImage et NouvelleImage
qui permettent de substituer la source d'une image à une
autre dans une balise IMG.
<HTML>
<HEAD>
<SCRIPT LANGUAGE="JavaScript">
function changeLeDocument ( NouvelleCouleur, QuelleImage,
NouvelleImage )
{
document.bgColor=NouvelleCouleur ; document.QuelleImage.src=NouvelleImage;
}
</SCRIPT>
</HEAD>
<BODY bgcolor="Black">
<IMG src="noir.gif" name="toto">
<FORM>
<INPUT type="button" value="clic" onClick="changeLeDocument
( '#ffffff ', toto, 'blanc.gif' ) ">
</FORM>
</BODY>
</HTML>
Une fonction peut contenir un appel à d'autre fonctions.
Une fonction peut même s'appeler elle-même !
Les variables
Pour stocker une valeur en mémoire, certains langage de
programmation utilisent plusieurs types de variables, Le JavaScript
n'en connaît qu'un susceptible de contenir indifféremment
texte, valeur booléenne (vrai-faux) ou numérique.
Pour déclarer une variable qui ne sera disponible que
durant l'exécution d'une fonction, on procède à
sa déclaration dans le corps de la fonction et on utilise
le mot clé var :
var REPONSE = "oui"
après exécution de la fonction où elle est
créée et utilisée, la variable REPONSE n'existe
plus en mémoire.
Pour déclarer une variable dite globale, qui restera disponible
pour l'ensemble des scripts on se contente de lui affecter une
valeur :
REPONSE = "Bonjour"
Cette affectation peut être effectuée dans une fonction
ou en dehors de toute fonction. Les noms de variables doivent
commencer par une lettre. Rappel : JavaScript distingue Capitale
et minuscule.
Les opérateurs
La manipulation des données requiert l'utilisation d'opérateurs
arithmétiques et logiques.
Nous avons déjà rencontré un opérateur
dans nos exemples précédents : L'opérateur
d'affectation ou signe égal.
x = 7 est une expression qui confère à la variable
x la valeur numérique 7.
Toutes les variables doivent se voir affecter une valeur. Une
variable indéfinie provoquera une erreur lors de l'exécution
du script.
les opérateurs arithmétiques :
x= 5+(7*2)
y=x-8
A noter + est aussi le signe de concaténation de chaîne
de caractères.
x = " tout le monde "
y = "bonjour " + x
y a désormais pour contenu la chaîne : "Bonjour
tout le monde"
les opérateurs de comparaison :
RESULTAT = (x<=9)
Dans ce derniers cas, RESULTAT se voit conférer la valeur
vraie si et seulement si x est inférieur ou égal
à 9.
Attention à ne pas confondre l'opérateur d'affectation
= qui change la valeur du terme de gauche avec l'opérateur
de comparaison == dont le contraire est != :
EGALITE = ( x == y )
La variable EGALITE aura la valeur "vrai" si x et y sont égaux.
DIFFERENCE = ( x != y )
La variable DIFFERENCE aura la valeur "vrai" si x et y sont différents.
Les opérateurs logiques :
Ils permettent des "calculs" sur des valeurs booléennes
(vrai-faux).
( x == y ) && ( x != y )
signifie ( x est identique à y ) ET ( x
est différent de y ). C'est une expression toujours
fausse !
( x < y ) || ( x > y )
Du fait de l'utilisation de l'opérateur OU ici, l'expression
ne peut être fausse que dans un seul cas : si x est
identique à y
L'opérateur conditionnel :
familier aux programmeurs C, c'est un opérateur à
trois opérandes :
RESULTAT = (x > 3) ? "gagné " : "perdu"
La variable RESULTAT se voit conférer la valeur "gagné"
si l'expression ( x > 3 ) est vraie, sinon RESULTAT est égal
à "perdu"
Les instructions de contrôle
Une instruction affectant une valeur à une variable ou
encore un appel à une fonction sont des instructions simples.
Une instruction qui permet de rompre l'exécution séquentielle
d'une programme (par un test, une boucle, un branchement...) est
appelée une instruction de contrôle.
Le test if... , if ... else...
Le mot clé if permet d'exécuter une instruction
de façon conditionnelle. Un exemple ? On rencontre
absolument partout ce type de script :
if ( navigator.appName == "Netscape" )
{
maPremiereFonction() ;
madeuxiemeFonction() ;
...
}
Il s'agit ici de s'assurer avant tout que le navigateur est capable
d'exécuter les instructions contenues entre les accolades
et pour ce faire de s'assurer de son nom ( propriété
appName de l'objet Navigator ).
Les instructions entre accolades ne seront exécutées
que si l'expression placée entre parenthèses après
if est vraie.
On peut indiquer optionnellement un jeu d'instructions qui seront
exécutées dans le cas contraire. On ajoute alors
un deuxième bloc entre accolades précédé
du mot clé else :
if ( navigator.appName == "Netscape" )
{
maPremiereFonction() ;
madeuxiemeFonction() ;
...
}
else
{
alert ( " Ces pages requièrent Netscape ! ") ;
}
La boucle for
Pour forcer l'exécution répétée d'une
ou plusieurs instructions, on dispose du mot clé for :
for ( var x = 1 ; x <= 5 ; x = x+ 1 )
{ monInstruction()
}
Les instructions placées dans les accolades seront dans
ce cas exécutées 5 fois.
A - La première chose que le navigateur fait lorsqu'il
rencontre une instruction for c'est d'affecter à x la valeur
1.
B - Il vérifie ensuite si la condition ( x <= 5 ) est
vraie et seulement dans ce cas exécute la fonction monInstruction()
une fois.
C - Après quoi le navigateur incrémente la valeur
x (exécute x = x+ 1 ) et reprend au point B
( il vérifie si la condition est vraie avant d'exécuter
l'instruction ).
La boucle ne s'achève que lorsque la condition ( x<=
5 ) est devenue fausse.
La boucle while
Le mot clé while permet de répéter une ou
plusieurs instructions tant qu'une condition est vraie.
while ( x <= y )
{
maFonction() ;
}
La ou les fonctions placées dans les accolades seront
exécutées repétitivement tant que la condition
( x <= y ) est vraie. c'est une variante intéressante
à la boucle for en ce que la condition n'est évaluée
qu'après que l'instruction est exécutée.
cela signifie que maFonction() sera appelée au moins une
fois (la première).
Netscape propose le téléchargement du manuel de
référence de JavaScript sur son site : http://developper.netscape.com/docs/manuals/
communicator/jsguide4/index.htm