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
|