Javascript


le langage JAVASCRIPT.





|
 
Le JavaScript permet de placer du code dans une page HTML.

il existe trois manières de demander l'exécution de code JAVASCRIPT : a/ en utilisant le pseudo protocole javascript: dans un lien
<A HREF="javascript:le-code>cliquez pour executer</a>

b/ en réagissant à un évenement dans une balise HTML (formulaire particulièrement)

<FORM>
<INPUT name="button" type="button" onClick="alert('Pour un test ! Merci.');" value=" Test ">
</FORM>

Exemple : Une première instruction Javascript

Sans vraiment entrer dans les détails, voyons une première instruction Javascript (en fait une méthode de l'objet window) :

alert("Pour un test ! Merci.");


c/ en placant le code directment dans la page HTML :

Dans la logique du langage Html, il faut signaler au browser par une balise, 
que ce qui suit est un script et que c'est du Javascript (et non du VBScript).

C'est la balise
<SCRIPT LANGUAGE="Javascript">.

on peut aussi placer le code dans un fichier .js à inclure en ajoutant SRC="fichierjavascript.js" à la balise <SCRIPT>
De même, il faudra informer le browser de la fin du script.


C'est la balise </SCRIPT>. Les commentaires

Javascript utilise les conventions utilisées en C et C++ soit
// commentaire
Tout ce qui est écrit entre le // et la fin de la ligne sera ignoré.

Il sera aussi possible d'inclure des commentaires sur plusieurs lignes avec le code

/* commentaire sur
plusieurs lignes */


|


javascript utilise un syntaxe "Objet" :


    nom-de-l'objet.nom-de-la-methode


      par exemple document.write();

La syntaxe est assez simple soit

write("votre texte");

On peut aussi écrire une variable, soit la variable resultat -> write(resultat);

Pour associer du texte (chaînes de caractères) et des variables, on utilise l' instruction: write("Le résultat est " + resultat);

On peut utiliser les balises Html pour agrémenter ce texte

write("<B>Le résultat est</B>" + resultat); ou
write ("<B>" + "Le résultat est " + "</B>" + resultat)

 

exemple :

  Voir le résultat


|
  • Writeln
    même logique (et même syntaxe) que write mais ajoute un retour chariot
  • variable.small
    utilisé en argument du Write, affiche variable mais en petite police.
  • variable.big
    comme variable.small, mais en plus grande police.

    vous trouverez également
    • variable.blink
    • variable.bold
    • variable.fixed (équivalent de <TT>)
    • variable.fontcolor("couleur")
    • variable.strike
    • variable.sub
    • variable.sup
  • pour la mise en forme du document
    • document.bgColor(couleur de fond)
    • document.fgColor(couleur d'avant plan)
    • document.linkColor(couleur des liens)
    • document.alinkColor(couleur des liens actifs)
    • document.vlinkColor(couleur des liens visités)

ATTENTION: Javascript est sensible à la casse, si vous écrivez bgcolor et non bgColor, votre demande ne sera pas prise en compte.


|



Définition de variables :

soit de façon explicite.
  var Numero = 1
  var Prenom = "Jean"

soit de façon implicite.
  Numero = 2
  Prenom = "Paul"

 

si la variable est déclarée dans une fonction elle est locale, sinon elle est globale.

les différents types de variables

  • numérique (entier ou avec décimales) comme 12 et 19,6
  • chaîne (entre " ) comme "votre texte"
  • booléen (comme les indicateurs RPG) contient soit true (vrai) soit false (faux)
  • la valeur nulle (mot réservé null)

exemple :

  Voir le résultat

La fonction typeof retourne le type la variable.

  • var.toString() transforme var en chaîne
  • parseInt( var ) transforme var en entier
  • parseFloat( var ) transforme var en numérique flottant
  • isNan( var) indique par true si var n'est pas un chiffre (Not A Number), false dans la cas contraire.


|

  Les opérateurs de calcul

Dans les exemples, la valeur initiale de x sera toujours égale à 11.

 Signe Nom Signification Exemple Résultat
+ plus addition x + 3 14
- moins soustraction x - 3 8
* multiplié par multiplication x*2 22
/ divisé par division x /2 5.5
% modulo reste de la division par x%5 1
= a la valeur affectation x=5 5

 

  Les opérateurs de comparaison

Signe  Nom Exemple Résultat
== égal x==11 true
< 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

Attention, ne confondez pas =, qui est l'opérateur d'affectation (je veux assigner une nouvelle valeur) et l'opérateur de comparaison = =

  Les opérateurs logiques

Ils permettent de relier entre elles plusieurs conditions

 Signe Nom Exemple Signification
&& et (condition1) && (condition2) condition1 et condition2
|| ou (condition1) || (condition2) condition1 ou condition2
   

 

 

Les opérateurs associatifs

On appelle ainsi les opérateurs qui réalisent un calcul dans lequel une variable intervient des deux côtés du signe =
(ce sont donc aussi des opérateurs d'attribution, donc).

Dans les exemples suivants x vaut toujours 11 et y aura comme valeur 5.

 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

 

  Les opérateurs d'incrémentation

Ces opérateurs vont augmenter ou diminuer la valeur de la variable d'une unité. (particulièrement dans les boucles)
.
Dans les exemples x vaut 3.

Signe Description Exemple Signification Résultat
x++ incrémentation
(x++ est identique à x=x+1)
y = x++ assigner 3 puis ajouter 1 4
x-- décrémentation
(x-- est le même que x=x-1)
y= x-- assigner 3 puis enlever 1 2

 

|

Les fonctions :

nous parlons ici, de créer vos propres fonctions, les fonctions intégrées du langage sont appelées méthodes et sont liées à un objet

function nom_de_la_fonction(arguments) {
         ... instructions ...
}

il est toujours préférable de placer la définition de la fonction á l'intérieur de 
<HEAD> </HEAD>

exécution : nom_de_la_fonction();

passage de paramètres et retour de valeur :

function cube(nombre) {
         var cube = nombre*nombre*nombre
         return cube;
}
exécution : document.writeln(cube(5));

exemple :

  Voir le résultat

|

Structuration du langage:

  • IF (condition) {

       instructions;
    }
    else {

      
    instructions;
    }
  • (condition) ? instruction-si-vrai : instruction-sinon
  • for (valeur départ, condition, incrément)
      
     instruction
    }
  • While (condition pour faire) {
      
     instruction
    }
  • break // sortie anticipée de la boucle en cours
  • continue // saut d'un tour de la boucle en cours

|

Événements interceptables:

  • onClick

       clique souris
  • onLoad

       chargement de la page
  • onUnLoad

      
     l'utilisateur quitte la page
  • onMouseOver

      
     lorsque la souris se positionne dessus
  • onMouseOut

      lorsque la souris quitte l'élément
  • onFocus

     lorsque l'élément devient l'élément actif (prend le focus)
  • onBlur

     lorsque l'élément perd le focus
  • onChange

     lorsque le champ de formulaire est modifié
  • onSelect

     lorsque le texte d'un champ de formulaire est sélectionné
  • onSubmit

     lorsque le bouton "submit" d'un formulaire est utilisé




  Gestionnaires d'événement disponibles en Javascript

voici les associations possibles objet html / évenements javascript .

Objets Gestionnaires d'événement disponibles
Fenêtre onLoad, onUnload
Lien hypertexte onClick, onmouseOver, on mouseOut
Elément de texte onBlur, onChange, onFocus, onSelect
Elément de zone de texte onBlur, onChange, onFocus, onSelect
Elément bouton onClick
Case à cocher onClick
Bouton Radio onClick
Liste de sélection onBlur, onChange, onFocus
Bouton Submit onClick
Bouton Reset onClick

Cas particulier du onMouseover et onMouseout :

Pour gérer le passage de la souris, vous devez l'associer à un lien (<A HREF en html...), le plus simple est souvent de créér un lien fictif par

<A HREF="#" onMouseover=action()">la partie de texte réactive</a> [ un ancrage vers # référence la page elle même.]

exemple


test de la souris  

C'est comme cela que vous pouvez animer vos pages en, par exemple, changeant d'image
(même dimension mais autre couleur ou autre intensité, etc ) lors du passage de la souris

puis

 

 

|

Gestion des formulaires en Javascript:

Un formulaire est marqué par <FORM name= " "> </FORM>
  Avec javascript il faut que votre formulaire soit nommé !

il possède les propriétés et les méthodes suivantes :

  • action
    • nom du pgm CGI
  • method
    • méthode (post ou get)
  • target
    • nom de la fenêtre cible
  • submit()
    • validation du formulaire (comme le bouton submit)
  • reset()
    • ré initialisation du formulaire

Pour accéder à un élément du formulaire :

[document.]nom-du-formulaire.objet.propriété

l'objet en cours peut être désigné par THIS

  • <INPUT type="text"> et <TEXTAREA>
    • name
    • value
    • defaultvalue
    • réagissent à l'évènement onClick et onChange.
Dans la section <HEAD> </HEAD>

puis

Zone de texte d'entrée

Zone de texte de sortie
  • bouton radio <INPUT type="radio">
    • name
    • index (base 0)
    • checked :   if (form.bouton[0].checked) ...
    • defaultchecked
    • value
  • cases à cocher <INPUT type=checkbox">
    • name
    • checked :   if (form.bouton[0].checked) ...
    • defaultchecked
    • value
  • liste déroulante <SELECT> </SELECT>
    • name
    • length   (nombre de postes) ...
    • selectedindex (n° [en base 0] du poste sélectionné)
    • defaultselectd
  • bouton "reset" et "submit"
    • ne possédent pas de propriété, ils réagissent à la méthode onClick.

|

Boites de dialogue:

  • alert('texte du message à afficher')

       affiche une boite de dialogue
  • Prompt('texte du message à afficher', 'valeur initiale')

       
    affiche une boite de dialogue avec saisie et retourne le résultat.
  • Confirm('texte du message ?')

      
     affiche une fenêtre de confirmation
\n, indique un retour chariot.

Divers:

  • Minuterie
    • variable=setTimeout(fonction à lancer , intervalle en millisecondes)
    • clearTimeout(variable) [arrêt de la demande précédente]

     

|

L'objet fenêtre (Window):

  • open
    • var = window.open("URL" , "nom de la fenêtre" , "options")

      les options sont
      toolbar=yes | no Affichage de la barre d'outils
      location=yes | no Affichage de champ d'adresse (ou de localisation)
      directories=yes | no Affichage des boutons d'accès rapide
      status=yes | no Affichage de la barre d'état
      menubar=yes | no Affichage de la barre de menus
      scrollbars=yes | no Affichage des barres de défilement.
      resizable=yes | no Dimensions de la fenêtre modifiables
      width=x Largeur de la fenêtre en pixels
      height=y Hauteur de la fenêtre en pixels

    Vous pouvez écrire dans la fenêtre que vous venez d'ouvrir par :

          var.document.write ...

  • close
    • fermeture de la fenêtre, le plus simple étant d'utiliser self, plutôt que son nom

      ainsi self.close, ferme la fenêtre en cours.
  • status
    • modifie la barre d'état de la fenêtre
       <HTML>
        <BODY>
          <A HREF="#" onmouseover="self.status='Votre texte'; return true;">xxx</A>
        </BODY>
       </HTML>

           Il est indispensable d'ajouter return true

  • defaultstatus
    • fixe la nouvelle valeur de la barre d'état.
  • print
    • imprime le contenu de la fenêtre
  • moveTo(x , y)
    • déplace la fenêtre aux coordonées x et y (angle sup. gauche en pixels)
  • moveBy(x , y)
    • déplace la fenêtre de x et y pixels
  • resizeTo(x , y)
    • redimensionne la fenêtre (x et y sont les nouvelles hauteurs et largeurs)
  • resizeBy(x , y)
    • redimensionne la fenêtre (x et y sont des incréments en + ou -)

L'objet history (enfant de l'objet Window):

  • back
    • retourne à la page précédente
  • forward
    • va à la page suivante
  • go( -x)
  • remonte de X pages en arrière
      • Ainsi
           <form name="form1">
               <input type="button" value="retour 2 pages en arrière"
                 onclick="window.history.go(-2);">
        	</form>
        affiche un bouton permettant une retour en arrière de deux pages.

L'objet document (enfant lui aussi de l'objet Window):

  • title
    • titre du document (modifiable dynamiquement)
  • lastModified
    • date de mise à jour
  • URL
    • URL du document
  • referrer
    • URL de la page précédente

ainsi que les fonctions de mise en forme vues plus haut :

  • document.bgColor(couleur de fond)
  • document.fgColor(couleur d'avant plan)
  • document.linkColor(couleur des liens)
  • document.alinkColor(couleur des liens actifs)
  • document.vlinkColor(couleur des liens visités)


|

Les autres objets Javascript :

  • string

    la propriété est ::
    length longueur de la chaîne

    les méthodes sont :
    anchor() transforme une chaine en ancrage nommée <A name=" ">
    big() passe la chaine en police plus grande (/big> </big>)
    blink() passe le texte en clignotant
    bold() passe le texte en gras
    charAt() extrait le nième caractère de chaine (sur une base 0)
    var str='une chaine'
    str.charAt(5)
    // retourne c
    fixed() transforme le texte en taille fixe (<TT> </TT>)
    fontcolor() assigne une couleur
    fontsize() assigne une taille de police
    indexOf() recherche l'argument et retourne sa position
    [le début de recherche, est facultatif, et en 2ème position]
    italics() transforme le texte en itatlique
    lastindexOf() voir indexOf()
    link() transforme une chaine en ancrage (<A HREF=" ">)
    small() passe la chaine en police plus petite
    split() convertit une chaîne en un tableau avec comme délimitateur le paramètre recu.
    strike() convertit une chaîne en police barrée
    sub() et sup() convertit le texte en exposant haut et bas
    substring() extrait une partie d'une chaîne, comme tous les langages du monde
    toLowerCase() convertit en minuscules
    toUpperCase() convertit en majuscules
    valueOf() retourne le contenu

    il existe une fonction du langage liée aux chaînes : escape()
    elle est capable de transformer une chaîne en version encodée [l'espace est remplacé par %20 , etc..]

  • date

    cet objet doit être créé par var = new date( ) [sans argument, retourne la date du jour]

    puis vous utiliserez var.méthode (par exemple var.getDate, etc...)

    les méthodes disponibles sont :
    getDate() retourne le jour du mois
    getDay() retourne le jour de la semaine [0 à 6]
    getHours retourne l'heure [00 à 23]
    getMinutes() retourne les minutes [00 à 59]
    getMonth() retourne le mois [1 à 12]
    getSeconds() retourne les secondes [00 à 59]
    getTime() retourne une représentation interne [en millisecondes depuis 01/01 1970]
    getTimezoneOffset retourne l'écart avec GMT
    getYear() retourne l'année sur 2 chiffres
    parse() analyse une chaîne contenant une date et retourne sa représentation interne
    steDate() fixe la partie année d'une date
    setHours() fixe la partie heure
    setMinutes() fixe la partie minutes
    setMonth() fixe le mois
    setSeconds() fixe les secondes
    setTime() fixe la date (l'arguement est en millisecondes)
    setYear() fixe l'année
    toGMTString() convertit une date en chaîne au format GMT (dépendant le l'OS)
    toLocaleString() convertit une date en chaîne (au format local)
    UTC() convertit une date en haures numérique (nbr de millisecondes)

  • math

    cet objet permet l'accès à toutes les fonctions mathématiques

    les principales méthodes sont :
    abs() retourne la valeur absolue
    ceil() retourne l'entier immédiatement supérieur
    floor() retourne l'entier immédiatement inférieur
    max() retourne le plus grand des deux arguments
    min() retourne le plus petit des deux arguments
    round() retourne l'arrondi comptable
    random() retourne un nombre aléatoire
    pow(a , b) retourne a à la puissance b
    ... mais aussi cos() , acos() , tan() , atan() , sin() , asin() , sqrt()


    pour les calculs complexes, utilisez la fonction eval
           str='5 + 10';
           x=eval(str);
         a comme résultat x=15 

  • array

    cet objet permet la création de tableaux ,

    comme pour les dates, il faut d'abord le créé par tbl = new array(x)

    le tableau se manipule comme une variable, mais avec un indice tbl[y], en base 0.

    les princiaples méthodes sont :
length() retourne la nombre de postes
reverse() inverse le tableau (le dernier élément devient le premier, etc...)
sort() tri le tableau en ordre alphabétique.
join() retourne une chaîne de tous les postes du tableau, concaténés.



pour créer un tableau à double entrées, il faut écrire
nom_du_tableau[i] = new Array(y); , et cela pour chaque poste

  • navigator

    cet objet représente le navigateur client

    les principales méthodes sont :
appName() retourne le nom du navigateur
(NETSCAPE ou INTERNET EXPLOREUR)
appCodeName retourne généralement Mozilla [ (c) Netscape. ]
appVersion retourne la version du navigateur
appUserAgent retourne des informations de compatibilité et de version d'OS

exemple :


|

Javascript et NetData ou Javascript et Pages JSP

Ces deux environnements sont bien évidement compatibles et complémentaires.

Le serveur envoi une page HTML dynamiquement constituée ou non, qui contient du HTML et du javascript,
ces deux langages étant interprétés sur la plateforme cliente.

l' utilisation la plus courante est la vérification de formulaire, par

<FORM action="xxx" name="form1" onSubmit="fonction() ou traitement">

il suffit que la fonction ou le traitement retourne false pour que la soumission n'est pas lieu.

voir l'exemple NetData ci joint :

  1. le formulaire

  2. la fonction de vérification

  3. les fonctions qui réalisent le contrôle :

  4. Exécuter la macro !

Dans ce cadre l"objet REGEXP (c'est notre dernier) peut être d'un grand service.

il s'agit d'utiliser la puissance des expressions régulières du monde UNIX

  • Déclaration

    var exp = new regexp(expression, options)

    expression contenant une ou plusieurs chaîne(s) à rechercher, ainsi que des caractères réservés.

    Car. spéciaux Signification
    ^ Début de ligne ou de chaîne
    $ Fin de ligne ou de chaîne
    . N'importe quel caractère
    x | y Caractère x ou y
    [abc] Groupe de caractères : n'importe lequel de ceux entre crochets
    [a-z] Groupe de caractères : n'importe lequel compris dans la plage (ici une minuscule)
    [^0-9] Groupe de caractères : tous sauf ceux entre crochets
    (x) Expression "parenthèsée" (mémorisée)
    * Caractère précédent de 0 à X fois (a* = de 0 à n fois, le caractère a)
    + Caractère précédent de 1 à X fois
    ? Caractère précédent de 0 à 1 fois
    {n} Caractère précédent exactement n fois
    {n,} Caractère précédent au moins n fois
    {n,m} Caractère précédent entre n et m fois
    \ N'est pas un caractère, sert de caractère d'échappement (\* ==> le caractère *)
    \\ Caractère \
    \d Chiffres (équivalent à [0-9])
    \D Sauf chiffres (équivalent à [^0-9])
    \b Frontière de mot (espace, alinéa, ...)
    \s Caractère d'espacement (espace, tabulation, saut de page, ...) équivalent à [ \f\n\r\t\v]
    \S Un seul caractère sauf un espacement
    \w N'importe quel caractère alphanumérique, y compris undescore (_) équivalent à [A-Za-z0-9_]
    \W Tout sauf un caractère alphanumérique équivalent à [^A-Za-z0-9_]


    Par exemple un mot de passe devant faire entre 3 et 8 caractères (lettres ou chiffres) : ^[a-zA-Z0-9]{3,8}$

    La signification est :
    ^ : pour montrer le début de la chaine,
    [a-zA-Z0-9] : pour les caractères alphanumérique de a à z, de A à Z et de 0 à 9,
    {3,8} : pour indiquer qu'il faut une longueur de 3 à 8 caractères alphanumériques,
    $ : pour interdire tout caractère après.

options peut contenir

  • g         la recherche est globale (sinon on s'arrète sur la première occurrence trouvée)
  • i          ignore la casse (différence minuscules/MAJUSCULES)
  • gi         les deux options cumulées
  • (rien)   aucune des deux options


méthodes disponibles

  • test(var)

    indique (par true ou false) si l'expression régulière est vraie pour une chaine (rencontrée)
    function Verifpwd(pwd) {
     var exp=new RegExp("^[a-zA-Z0-9]{3,8}$" , "g");
     if ( exp.test(pwd) == false) { 
    alert(" E R R E U R !\n\nLe mot de passe n'est pas valide !"); } }

  • exec(var)

    cette méthode retourne une occurrence de la chaîne recherchée (en ce décalant d'une position à chaque appel)

l'objet String possède lui aussi des méthodes acceptant les expressions régulières :

  • match(exp)

    renvoi un tableau de toutes les occurrences rencontrées.
  • replace(exp, nouvelle-chaine)

    remplace toutes les occurrences par nouvelle-chaine.
  • search(exp)

    retourne la première occurrence.
  • split(exp):

    renvoi tous les mots d'une phrase dans un tableau en considérant "exp" comme le séparateur.

 

 

©AF400