• dans la balise script> • dans un fichier externe • grâce aux
Transcription
• dans la balise script> • dans un fichier externe • grâce aux
javascript Pourquoi javascript ? javascript (Netscape) Ajout du contrôle au niveau du client initialement LiveScript, rien à voir avec Java • Exemple : • contrôle des entrées du formulaire avant sa soumission. Extension du langage html incluse dans le code. Le code javascript est directement écrit dans la page html. Aucune confidentialité au niveau des codes (ceux-ci sont visibles). javascript est sensible à la casse Chaque instruction se termine par un point-virgule. Scripts embarqués dans des documents HTML • Contrôle des ressources du client • documents, formulaires, applets, … • moins d’intervention du Serveur WWW • Génération dynamique de documents DHTML DOM : Document Object Model (W3C) description « objet » d ’un document XHTML exploitable par javascript mais IE et Mozilla ont chacun leur modèle de document 05/03/2007 Base de données 1 GMT/FP 1 A quoi ressemble un script? 05/03/2007 Base de données 1 GMT/FP 2 Ajout de commentaire dans le code Script : portion de code qui vient s'insérer dans une page html. Ne pas confondre les balises de commentaire html les caractères de commentaire javascript (documente le script) ! Code du script non visible dans la fenêtre du navigateur. Pour mettre en commentaire toute une ligne on utilise le double slash : // Tous les caractères qui suivent sont ignorés Le code est compris entre des balises spécifiques Pour mettre en commentaire une partie du texte, on utilise /* et */ : /* Toutes les lignes comprises entre ces repères sont ignorées par l'interpréteur de code */ <script type="text/javascript" > Placez ici le code de votre script </script> 05/03/2007 Base de données 1 GMT/FP La mise en commentaire d'une partie du code est utile pour la mise au point des programmes (permet d'éliminer provisoirement sans effacer). 3 05/03/2007 Base de données 1 GMT/FP 4 Inclure du javascript dans une page html Un exemple de javascript Afficher une boite de dialogue après chargement d'une page html • dans la balise <script> • dans un fichier externe • grâce aux événements <html><head> <title> Voici une page contenant du javascript </title> </head> <body> <script type="text/javascript" > alert("Voici un message d’alerte !"); // et voici un commentaire </script> </body> </html> 05/03/2007 Base de données 1 GMT/FP 5 05/03/2007 Base de données 1 GMT/FP 6 1 Dans la balise script Dans un fichier externe Une page Web est traitée de haut en bas. Il est possible de mettre les codes de javascript dans un fichier externe (nom_fichier.js). Si l'appel d'une fonction se situe avant la fonction dans la page, il est probable que cela génèrera une erreur (fonction non chargée). <script type="text/javascript" src="chemin/nom_fichier.js"> </script> On place généralement le maximum d'éléments du script dans l'en-tête (éléments situés entre les balises <head> et </head>). Si celui-ci n'existe pas, le navigateur exécutera le code inséré entre les 2 balises. Cette solution est à privilégier en cas de validation de la page 05/03/2007 Base de données 1 GMT/FP 7 Grâce aux évènements 05/03/2007 Base de données 1 GMT/FP 8 Objets dans une page html évènement : action de l'utilisateur ex : clic d'un bouton de la souris javascript traite les éléments qui s'affichent dans un navigateur comme des objets. Les évènements javascript sont placés dans le corps de la page comme attributs d'une balise html. Ces objets sont classés selon une hiérarchie. <balise evenement = "action"> Des propriétés et des méthodes leur sont associées. <body onload = "verifie();" > 05/03/2007 Base de données 1 GMT/FP 9 10 Un formulaire peut contenir : un champ de texte (textarea et nommé champ_texte). Objet le plus élevé dans la hiérarchie : objet window Le champ de texte est repéré par : window.document.forms[0].champ_texte Dans la fenêtre s'affiche une page : objet document Le champ de texte a comme propriétés parmi d’autres : value : le texte contenu dans le champ size : la taille du champ de texte Cette page peut contenir plusieurs objets : formulaires forms[n] images images[m] Base de données 1 GMT/FP Base de données 1 GMT/FP Quelques objets de formulaire Quelques objets dans une page 05/03/2007 05/03/2007 On peut modifier le texte du champ de texte champ_texte par : window.document.forms[0].champ_texte.value 11 05/03/2007 Base de données 1 GMT/FP 12 2 05/03/2007 Base de données 1 GMT/FP 13 05/03/2007 Base de données 1 GMT/FP 14 Document simple <html> <body> <p><img src="bienvenue.gif" height="69" width="184" id=“logo” /></p> <form id="formulaire">Nom:<br /> <input type="text" id="nom" value="" /><br /> Mot de Passe:<br /> <input type="password“ id="motpasse" value="" /> <input type="button" value="Valider" id="bouton" onclick="verif(this.parent)" /> </form> </body></html> 05/03/2007 Base de données 1 GMT/FP 15 Représentation arborescente d’objets d’un document 05/03/2007 Base de données 1 GMT/FP 16 Le concept de variable Exemple (script relatif au document) passwd = document.forms[0].elements[1].value; if(passwd = =‘toto’) {document.images[0].src = "iconlog.gif";} else {document.images[0].src = "iconnotlog.gif";} Une variable est définie par 1. 2. 3. un nom (identificateur) un type une valeur. Les noms de variables doivent répondre à certains critères : • un nom de variable doit commencer par une lettre (majuscule ou minuscule) ou un "_" ; • un nom de variable peut comporter des lettres, des chiffres et les caractères _ et & (espaces non autorisés !) ; • Les noms de variables ne peuvent pas être un mot réservé. 05/03/2007 Base de données 1 GMT/FP 17 05/03/2007 Base de données 1 GMT/FP 18 3 La déclaration de variables Les types de données dans les variables La déclaration des variables peut se faire de deux façons : Pas de déclaration du type de variable utilisée ... explicite, en faisant précéder la variable du mot clé var : var chaine= "bonjour" 4 types de données : • nombres : entiers ou à virgules • chaînes de caractères (string) : suite de caractères • booléens : variables à deux états • variables de type null : pas de données implicite, en écrivant directement le nom de la variable suivie du caractère = et de la valeur à affecter : chaine= "bonjour" Il est plus rigoureux et plus rapide à l’exécution de déclarer les variables de façon explicite avec le mot var. On peut déclarer plusieurs variables avec le même mot-clé var var i = 0, age = 15, nom = "Durand" 05/03/2007 Base de données 1 GMT/FP 19 Nombre entier 05/03/2007 Base de données 1 GMT/FP 20 Nombres à virgules (float) nombre entier : nombre à virgule flottante : peut être exprimé dans différentes bases décimale : peut être représenté de différentes façons l'entier est représenté par une suite de chiffres (de 0 à 9) ne devant pas commencer par 0 entier décimal 895 nombre comportant un point (et non une virgule) 845.32 fraction 27/11 nombre exponentiel 2.75e-2 35.8E+10 hexadécimale : l'entier est représenté par une suite de chiffres (de 0 à F) devant commencer par 0x ou 0X octale : l'entier est représenté par une suite de chiffres (de 0 à 7) devant commencer par 0 05/03/2007 Base de données 1 GMT/FP 21 Chaîne de caractères (string) 05/03/2007 Base de données 1 GMT/FP 22 Booléens (booleans) Chaîne de caractère : suite de caractères encadrée par des guillemets simples (') ou doubles ("), Caractères spéciaux : \b : touche de suppression \n : retour à la ligne \t : tabulation \' : guillemets simples booléen : variable servant à évaluer une condition, il peut donc avoir deux valeurs \f : formulaire plein \r : appui sur la touche ENTREE \" : guillemets doubles \\ : caractère antislash Ainsi, si on veut stocker la chaîne suivante dans la variable Titre : Qu'y a-t-il dans "c:\windows\" true ou 1 false ou 0 Il faudra écrire dans le code javascript : Titre = "Qu\'y a-t-il dans \"c:\\windows\\\""; ou Titre = 'Qu\'y a-t-il dans \"c:\\windows\\\"'; 05/03/2007 Base de données 1 GMT/FP 23 05/03/2007 Base de données 1 GMT/FP 24 4 L'objet string Propriété de l'objet string L'objet string a une seule propriété : length retourne la longueur d'une chaîne de caractères. string : chaîne de caractères On peut directement passer la chaîne de caractères comme objet. Les propriétés et méthodes de l’objet String permettent la manipulation de chaînes de caractères. x = ('chaine de caracteres').length; On peut aussi utilser une propriété d’une variable de type string x = nom_chaine.length ; 05/03/2007 Base de données 1 GMT/FP 25 Les méthodes de l'objet String 05/03/2007 Base de données 1 GMT/FP 26 Méthode charAt() chaîne de caractères : tableau de n caractères, la position du premier caractère est 0 Une chaîne ayant n caractères aura son dernier caractère en position n-1 Deux syntaxes pour la méthode charAt() x = "chaine de caractères"; Resultat = x.charAt(position); Resultat = charAt("chaine de caractères", position); charAt(chaîne, position) ou chaîne.charAt(position) position : entier qui représente la position du caractère à récupérer, compris entre 0 Retourne le caractère situé à la position donnée en paramètre indexOf(sous-chaîne, position) et n-1 (où n représente la longueur de la chaîne). Retourne la position d'une sous-chaîne (lettre ou groupe de lettres) dans une chaîne de caractère, en effectuant la recherche de gauche à droite, à partir de la position spécifiée en paramètre. lastIndexOf(sous-chaîne, position) similaire à indexOf(), à la différence que la recherche se fait de droite à gauche : Si position est négatif ou supérieur ou égal à la longueur, charAt() renvoie une chaîne de longueur nulle. Chaine = 'Comment ça marche?' var Resultat = charAt(Chaine,0) donne 'C' var Resultat = charAt("Comment ça marche?", 1) donne 'o' var Resultat = Chaine.charAt(17) donne '?' var Resultat = ("Comment ça marche?").charAt(18) donne "" substring(position1, position2) Retourne la sous-chaîne (lettre ou groupe de lettres) comprise entre les positions 1 et 2 données en paramètre. toLowerCase() Convertit tous les caractères d'une chaîne en minuscules toUpperCase() var Resultat = charAt(Chaine, -1) donne "" Convertit tous les caractères d'une chaîne en majuscules 05/03/2007 Base de données 1 GMT/FP 27 Méthode indexOf() 05/03/2007 Base de données 1 GMT/FP 28 Méthode lastIndexOf() indexOf() permet de rechercher (de gauche à droite) la position d'une sous-chaîne dans une chaîne de caractères. Chaine = "chaine de caractères"; Sous-Chaine = "sous-chaîne de caractères"; Resultat = Chaine.indexOf(Sous-Chaine,position); La position indiquée en argument permet de déterminer la position du caractère à partir duquel la recherche est effectuée. L'argument position doit être compris entre 0 et n-1. Si cet argument est omis, la recherche débutera à la position 0. Lorsque la recherche est infructueuse, la méthode indexOf() renvoie la valeur -1. lastIndexOf() permet de rechercher (de droite à gauche) la position d'une souschaîne dans une chaîne de caractères. Chaine = "chaine de caractères"; Sous-Chaine = "sous-chaîne de caractères"; Resultat = Chaine.lastIndexOf(Sous-Chaine,position); La position indiquée en argument permet de déterminer la position du caractère à partir duquel la recherche est effectuée (vers la gauche pour cette méthode). L'argument position doit être compris entre 0 et n-1. Si cet argument est omis, la recherche débutera à partir de la fin de la chaîne. Si la recherche est infructueuse, la méthode lastIndexOf() renvoie la valeur -1. Chaine = 'Comment ça marche?' Sous_Chaine = 'mar' var Resultat = Chaine.indexOf(Sous_Chaine, 6) donne '11' var Resultat = Chaine.indexOf(Sous_Chaine) donne '11' var Resultat = Chaine.indexOf(Sous_Chaine, 11) donne '11' var Resultat = Chaine.indexOf(Sous_Chaine, 12) donne '-1' var Resultat = Chaine.indexOf(Sous_Chaine, -1) donne "-1" var Resultat = Chaine.indexOf(Sous_Chaine, 15) donne "-1" Chaine = 'Comment ça marche?' Sous_Chaine = 'mar' Chaine.lastIndexOf(Sous_Chaine, Chaine.lastIndexOf(Sous_Chaine) Chaine.lastIndexOf(Sous_Chaine, Chaine.lastIndexOf(Sous_Chaine, Chaine.lastIndexOf(Sous_Chaine, 6) donne '-1' donne '11' 11) donne '11' 12) donne '11' -1) donne "-1" Chaine.lastIndexOf(Sous_Chaine, 19) donne "-1" 05/03/2007 Base de données 1 GMT/FP 29 05/03/2007 Base de données 1 GMT/FP 30 5 Méthode substring() Méthodes toLowerCase() et toUpperCase() substring() permet de récupérer une sous-chaîne dans une chaîne de caractères en précisant en paramètres les positions des caractères entre lesquels la sous-chaîne doit être récupérée. Chaine = "chaine de caractères"; Resultat = Chaine.substring(position1, position2); Les positions indiquées permettent de déterminer les positions des caractères entre lesquels la sous-chaîne doit être récupérée. position1 et position2 doivent être compris entre 0 et n-1. • Si l'argument position1 est plus petit que l'argument position2, la méthode substring() retourne la souschaîne commençant à la position 1 et s'arrêtant au caractère situé avant position 2 • Si l'argument position1 est plus grand que l'argument position2, la méthode substring() retourne la souschaîne commençant à la position 2 et s'arrêtant au caractère situé avant position 1 • Si l'argument position1 est égal à l'argument position2, la méthode substring() retourne une chaîne vide toLowerCase() permet de convertir toutes les lettres d'une chaîne en minuscules, les autres caractères sont inchangés. Chaine = 'Comment ça Marche?' var Resultat = Chaine.toLowerCase donne 'comment ça marche?' toUpperCase() permet de convertir toutes les lettres d'une chaîne en majuscules, les autres caractères sont inchangés. Chaine = 'Comment ça Marche?' var Resultat = Chaine.toUpperCase donne 'COMMENT ÇA MARCHE?' Chaine = 'Comment ça marche?' var Resultat = Chaine.substring(1,5) donne 'omme' var Resultat = Chaine.substring(6,6) donne '' var Resultat = Chaine.substring(8,2) donne 'mment ' 05/03/2007 Base de données 1 GMT/FP 31 Qu'est-ce qu'un évènement? 05/03/2007 Base de données 1 GMT/FP 32 Liste de gestionnaires d’événements Evènement : action de l'utilisateur pouvant donner lieu à une interactivité. html ne gère que l'événement clic de souris. Grâce à javascript, il est possible d'associer des fonctions, des méthodes à des événements tels que le passage de la souris au-dessus d'une zone, le changement d'une valeur, … Un gestionnaire d'événement associe une action à un événement. onevenement="Action_javascript_ou_Fonction();" Les gestionnaires d'événements sont associés à des objets et leur code s'insère dans la balise de ceux-ci. 05/03/2007 Base de données 1 GMT/FP 33 Objets auxquels on peut associer des événements onclick onload onunload onmouseover onmouseout onfocus onblur onchange onselect on clique sur l'élément associé à l'événement onsubmit on clique sur le bouton de soumission d'un formulaire (qui permet d'envoyer le formulaire) 05/03/2007 le navigateur charge la page en cours le navigateur quitte la page en cours on positionne le curseur de la souris au-dessus d'un élément le curseur de la souris quitte un élément on donne le focus à un élément (élément sélectionné actif) l'élément perd le focus, l'utilisateur clique hors de cet élément on modifie le contenu d'un champ de données on sélectionne un texte (ou une partie) dans un champ de type "text" ou "textarea" Base de données 1 GMT/FP 34 Ouverture d'une boite de dialogue lors d'un click Lien hypertexte boîte de dialogue : window.alert("Votre Texte"); onclick, onmouseover, onmouseout Page du navigateur <html> <head> <title>Ouverture d'une boite de dialogue lors d'un click</title> </head> <body> <a href="javascript:;" onclick = "alert('Message d\'alerte a utiliser avec moderation');">Cliquez ici!</a> </body> </html> onload, onunload Bouton, Case à cocher, Bouton radio, Bouton Reset onclick Liste de sélection d'un formulaire onblur, onchange, onfocus Bouton Submit Le gestionnaire d'événement onclick est inséré dans la balise de lien hypertexte onsubmit <a ...> On ne désire pas que le lien charge une autre page : il faut insérer "javascript:;" dans l'attribut href. Un attribut vide risque de révéler le contenu de votre répertoire à vos visiteurs. Champ de texte et zone de texte onblur, onchange, onfocus, onselect 05/03/2007 Base de données 1 GMT/FP 35 05/03/2007 Base de données 1 GMT/FP 36 6 Qu'est-ce qu'un opérateur? Changement d’image lors du survol par la souris Le gestionnaire onmouseover permet de changer d’image au passage de la souris. Le gestionnaire onmouseout permet de rétablir l'image originale lorsque le curseur quitte l'image. opérateurs : symboles qui permettent de manipuler des variables, ie d’effectuer des opérations, les évaluer… <html> <head> <title> Rollover</title> </head> <body> <a href="javascript:;" onmouseover="document.img_1.src='image2.gif';" onmouseout="document.img_1.src='image1.gif';"> <img id="img_1" src="image1.gif"> </a> </body> </html> types d'opérateurs : • opérateurs • opérateurs • opérateurs • opérateurs • opérateurs • opérateurs de calcul d'assignation d'incrémentation de comparaison logiques bit-à-bit Pour pouvoir associer un événement à une image, il faut que celle-ci soit considérée comme un lien. Ainsi on place la balise <img ...> entre les balises <a ...> et </a> 05/03/2007 Base de données 1 GMT/FP 37 Les opérateurs de calcul 05/03/2007 Base de données 1 GMT/FP 38 Les opérateurs d'assignation Les opérateurs de calcul permettent de modifier mathématiquement la valeur d'une variable On peut écrire l’opération : ajouter une valeur dans une variable et stocker le résultat dans la variable (x=x+2 par exemple) sous la forme x+=2 + addition Ajoute deux valeurs x+3 += addition deux valeurs et stocke le résultat dans la variable (à gauche) - soustraction Soustrait deux valeurs x-3 * multiplication Multiplie deux valeurs x*3 / division Divise deux valeurs x/3 % modulo Reste de la division entière x%3 = affectation Affecte une valeur à une variable x=3 x+=2 équivaut à x=x+2 05/03/2007 Base de données 1 GMT/FP -= soustrait deux valeurs et stocke le résultat dans la variable x-=2 équivaut à x=x-2 39 Les opérateurs d'incrémentation *= multiplie deux valeurs et stocke le résultat dans la variable x*=2 équivaut à x=x*2 /= divise deux valeurs et stocke le résultat dans la variable x/=2 équivaut à x=x/2 05/03/2007 Base de données 1 GMT/FP 40 Les opérateurs de comparaison == Un opérateur de type x++ permet de remplacer des notations telles que x=x+1 ou bien x+=1 A ne pas confondre avec le signe d'affectation (=) opérateur d'égalité Compare deux valeurs et vérifie leur égalité x==3 1 si x est égal à 3, sinon 0 Vérifie qu'une variable est strictement inférieure à une valeur x<3 1 si x est inférieur à 3, sinon 0 Vérifie qu'une variable est inférieure ou égale à une valeur x<=3 1 si x est inférieur à 3, sinon 0 < opérateur d'infériorité stricte ++ Incrémentation Augmente d'une unité la variable x++ <= opérateur d'infériorité > opérateur de supériorité stricte Vérifie qu'une variable est strictement supérieure à une valeur -- Décrémentation Diminue d'une unité la variable x-- x>3 1 si x est supérieur à 3, sinon 0 >= opérateur de supériorité Vérifie qu'une variable est supérieure ou égale à une valeur x>=3 1 si x est supérieur ou égal à 3,sinon 0 Vérifie qu'une variable est différente d'une valeur x !=3 1 si x est différent de 3, sinon 0 != opérateur de différence 05/03/2007 Base de données 1 GMT/FP 41 05/03/2007 Base de données 1 GMT/FP 42 7 Les opérateurs logiques (booléens) Les opérateurs bit-à-bit Ce type d'opérateur permet de vérifier si plusieurs conditions sont vraies : Un opérateur bit-à-bit traite ses opérandes comme des données binaires. Les opérateurs suivants effectuent des opérations bit-à-bit, c'est-à-dire avec des bits de même poids. || OU logique (condition1)||(condition2)) Vérifie qu'une des conditions est réalisée & ET bit-à-bit 9 & 12 (1001 & 1100) && ET logique (condition1)&&(condition2)) Vérifie que toutes les conditions sont réalisées | OU bit-à-bit 9 | 12 (1001 | 1100) ! NON logique Inverse l'état d'une variable booléenne (retourne la valeur 1 si la variable vaut 0, 0 si elle vaut 1) ( !condition) Base de données 1 GMT/FP 43 Les priorités Retourne 1 si l'un ou l'autre des deux bits de même poids est à 1 (ou les deux) 13 (1101) ^ OU bit-à-bit 9 ^ 12 (1001 ^ 1100) 05/03/2007 Retourne 1 si les deux bits de même poids sont à 1 8 (1000) 05/03/2007 Retourne 1 si l'un des deux bits de même poids est à 1 (mais pas les deux) 5 (0101) Base de données 1 GMT/FP 44 Structure conditionnelle? ordre décroissant des priorités de tous les opérateurs parenthèses opérateurs unaires mult,div,modulo addition,soustraction décalage de bits opérateurs relationnels Égalité ET binaire OU exclusif binaire(XOR) OU binaire ET logique OU logique Affectations diverses () ++ -- ! * / % + << >> < > <= >= == != & ^ | && || = += -= *= /= %= ^= Structure conditionnelle : instructions qui permettent de tester si une condition est vraie ou non Si plusieurs priorités se trouvent dans la même expression et sont de même niveau, ce sera l’opérateur le plus à gauche qui sera effectué en premier. Grâce aux parenthèses qui sont toujours prioritaires, on peut définir l’ordre de calcul des opérateurs. Les parenthèses rendent un programme plus clair, plus lisible. 05/03/2007 Base de données 1 GMT/FP 45 L'instruction if 05/03/2007 Base de données 1 GMT/FP 46 L'instruction if ... else Exécute une série d'instruction si une condition est vraie. if (condition testée) {liste d'instructions} L’instruction if ne permet de tester qu'une condition L’instruction if ... else permet d'exécuter une autre série d'instruction en cas de non-réalisation de la condition. la condition doit être entre des parenthèses if (condition testée) {liste d'instructions} else {autre série d'instructions} Il est possible de définir plusieurs conditions à remplir avec les opérateurs && et ||. Par exemple : if ((condition1)&&(condition2)) teste si les deux conditions sont vraies if ((condition1)||(condition2)) Les instructions if…else peuvent être imbriquées teste si l'une ou l'autre des deux conditions est vraie 05/03/2007 Base de données 1 GMT/FP 47 05/03/2007 Base de données 1 GMT/FP 48 8 La boucle for Les boucles boucles : structures qui permettent d'exécuter plusieurs fois la même série d'instructions jusqu'à ce qu'une condition ne soit plus réalisée. La boucle for permet d'exécuter plusieurs fois la même série d'instructions. for(compteur; condition; modification du compteur) {liste d'instructions} exemple : La façon la plus commune de faire une boucle est de créer un compteur (une variable qui s'incrémente, c'està-dire qui augmente de 1 à chaque tour de boucle) et de faire arrêter la boucle lorsque le compteur dépasse une certaine valeur. 05/03/2007 Base de données 1 GMT/FP 49 L'instruction while for for for for (i=0;i<10;i++) (i=0;i<=10;i++) (i=1;i<10;i++) (i=1;i<=10;i++) 05/03/2007 exécute exécute exécute exécute 10 fois la boucle (i de 0 à 9) 11 fois la boucle (i de 0 à 10) 9 fois la boucle (i de 1 à 9) 10 fois la boucle (i de 1 à 10) Base de données 1 GMT/FP 50 Il peut être nécessaire de faire sauter à la boucle une ou plusieurs valeurs sans pour autant mettre fin à celle-ci. On utilise continue; Cette instruction exécute la liste d'instructions tant que la condition est réalisée. La condition de sortie pouvant être n'importe quelle structure conditionnelle, les risques de boucle infinie (boucle dont la condition est toujours vraie) existent, elle peut provoquer un plantage du navigateur ! Base de données 1 GMT/FP 51 Arrêt inconditionnel Exemple : On veut imprimer pour x allant de 1 à 10 la valeur de 1/(x-7). x=1; while (x<=10) {if (x == 7) {alert('division par 0'); x++; continue;} a = 1/(x-7); alert(x); x++;} 05/03/2007 Base de données 1 GMT/FP 52 La notion de fonction L'instruction break permet d'arrêter une boucle (for ou bien while). fonction : sous-programme qui permet d'effectuer un ensemble d'instruction par appel de la fonction dans le corps du programme principal. Exemple : Il serait possible de faire arrêter la boucle en cas d'annulation du dénominateur, pour éviter une division par zéro ! Les fonctions permettent d'exécuter dans plusieurs parties du programme une série d'instruction (simplicité du code donc taille for (x=1; x<=10; x++) {a = x-7; if (a == 0) {alert('division par 0'); break; } alert(1/a);} 05/03/2007 alert(i); dans une boucle est un bon moyen pour vérifier la valeur du compteur pas à pas ! Saut inconditionnel L'instruction while représente un autre moyen d'exécuter plusieurs fois la même série d'instructions. while (condition testée) {liste d'instructions} 05/03/2007 for(i=1; i<6; i++) {alert(i)} Toujours vérifier que la boucle a bien une condition de sortie (i.e le compteur s'incrémente correctement) Base de données 1 GMT/FP de programme minimale). javascript contient des fonctions prédéfinies mais on peut définir ses propres fonctions. 53 05/03/2007 Base de données 1 GMT/FP 54 9 La déclaration d'une fonction Appel de fonction Pour exécuter une fonction, il faut faire appel à elle Avant d'être utilisée, une fonction doit être définie La définition d'une fonction s'appelle "déclaration". Elle se fait grâce au mot clé function : nom_fonction(); function nom_fonction(argument1, argument2, ...) {liste d'instructions} Le mot clé function est suivi du nom que l'on donne à la fonction Le nom de la fonction suit les mêmes règles que les noms de variables : Les arguments sont facultatifs, mais les parenthèses doivent rester présentes Le nombre d'accolades ouvertes (fonction, boucles et autres structures) doit être égal au nombre de d'accolades fermées ! La même chose s'applique pour les parenthèses, les crochets ou les guillemets ! Une fonction ne s'exécutera pas tant que l'on ne fait pas appel à elle dans la page ! 05/03/2007 Base de données 1 GMT/FP 55 Les paramètres d'une fonction (I) • le point virgule signifie la fin d'une instruction et permet au navigateur de distinguer les différents blocs d'instructions • si des arguments ont été définis dans la déclaration de la fonction, il faudra les inclure lors de l'appel de la fonction (le même nombre d'arguments séparés par des virgules !) Une fonction doit être déclarée avant d'être appelée. Le gestionnaire d'évènement onload (à placer dans la balise body) permet d'exécuter une fonction au chargement de la page. <html> <head> <script type="text/javascript" > function Chargement() { alert('Bienvenue sur le site');} </script> </head> <body onload="Chargement();">... </body> </html> 05/03/2007 Base de données 1 GMT/FP Les paramètres d'une fonction (II) Il est possible de passer plusieurs paramètres séparés par des virgules à une fonction Autre méthode qui consiste à créer une fonction qui a comme paramètre le texte à afficher : Ex : page Web qui affiche une boîte de dialogue avec un texte différent selon le lien sur lequel on appuie. La méthode de base consiste à faire une fonction pour chaque texte à afficher : <html> <head> <html> <head> <script type="text/javascript" > function Affiche1() { alert('Texte1'); } function Affiche2() { alert('Texte2'); } </script> </head> <body > <a href="javascript:;"onclick="Affiche1();">Texte1</a> <a href="javascript:;"onclick="Affiche2();">Texte2</a> </body> </html> 05/03/2007 Base de données 1 GMT/FP 56 57 Travailler sur des variables dans les fonctions <script type="text/javascript" > function Affiche(Texte) { alert(Texte); } </script> </head> <body> <a href="javascript:;" onclick="Affiche('Texte1');">Texte1</a> <a href="javascript:;" onclick="Affiche('Texte2');">Texte2</a> </body> </html> 05/03/2007 Base de données 1 GMT/FP 58 Le mot-clé this Portée des variables : définition comme variables globales ou locales. Lorsqu’on appelle une fonction à partir d'un objet, par exemple un formulaire, le mot clé this fait référence à l'objet en cours et évite d'avoir à définir l'objet. Une variable déclarée implicitement (non précédée du mot var) sera globale , c'est-à-dire accessible après exécution de la fonction Pour passer l'objet en cours en paramètre d'une fonction, on utilise nom_fonction(this) Une variable déclarée explicitement (précédée du mot var) dans la fonction sera locale , c'est-à-dire accessible uniquement dans la fonction, toute référence à cette variable hors de la fonction provoquera une erreur (variable inconnue)... 05/03/2007 Base de données 1 GMT/FP 59 Pour manipuler une propriété de l'objet, on utilise this.propriete 05/03/2007 Base de données 1 GMT/FP 60 10 Qu'appelle-t'on une méthode? Objets du navigateur méthode : fonction associée à un objet, c'est-à-dire une action que l'on peut faire exécuter à un objet. exemple : une page html contient un objet appelé document. La méthode write()de l’objet document permet de modifier le contenu de la page html en affichant du texte. Une méthode s'appelle comme une propriété : window.objet1.objet2.methode() Dans le cas de la méthode write(), l'appel se fait comme suit : window.document.write() 05/03/2007 Base de données 1 GMT/FP 61 Les objets du navigateur sont classés hiérarchiquement Les objets du navigateur sont classés dans une hiérarchie qui décrit la page affichée à l'écran Niveau1 Niveau2 navigator window Informations sur le browser utilisé Gestion de la fenêtre d'affichage parent, frames, self, top Désignation de la sous-fenêtre location Informations sur l‘adresse de la page history historique (sites précédemment visités) document Informations sur contenu de la fenêtre images[ ] Tableau des images dans la page forms[ ] Tableau des formulaires dans la page links[ ] Tableau des liens dans la page anchors[ ] Tableau des ancres dans la page 05/03/2007 Niveau3 contient des informations sur le navigateur qui visite la page window : objet où s'affiche la page, contient des propriétés concernant la fenêtre elle-même mais aussi tous les objetsenfants contenus dans celle-ci location : contient des informations relatives à l'adresse de la page visitée history : l'historique, la liste de liens qui ont été visités précédemment document : contient les propriétés sur le contenu du document (couleur d'arrière plan, titre, ...) 05/03/2007 Base de données 1 GMT/FP Base de données 1 GMT/FP 62 Comment accéder à un objet? Pour accéder à un objet du navigateur, il faut parcourir la hiérarchie du navigateur, en partant du sommet (l'objet window), puis en parcourant tous les maillons jusqu'à atteindre l'objet désiré. window.objet1.objet2.objet3.objet_vise Commentaire Pour accéder/modifier une propriété de l'objet visé, il faut rajouter un point, puis le nom de la propriété. Certaines propriétés sont modifiables, on va pouvoir dynamiquement modifier un élément (texte, image, ...). ex : value D'autres par contre sont en lecture seule, on ne peut que récupérer des informations (pas les modifier...). ex: length, size 63 05/03/2007 Base de données 1 GMT/FP 64 La méthode getElementById() L'objet window Si un objet de la page est repéré par un id, on peut alors accéder aux propriétés de l’objet par la méthode getElementById() L'objet window est le parent de chaque objet qui compose la page web, il contient donc : l'objet document : la page en elle-même l'objet location : le lieu de stockage de la page l'objet history : les pages visitées précédemment l'objet frames : les cadres (division de la fenêtre en sous-fenêtres) 05/03/2007 navigator : Base de données 1 GMT/FP 65 document.forms[0].elements[1].value est équivalent à getElementById(‘motdepasse’).value 05/03/2007 Base de données 1 GMT/FP 66 11 Les propriétés de l'objet window defaultstatus frames length name parent self status top window Les méthodes de l'objet window alert(), confirm() et prompt() font apparaître une boîte de dialogue. open() et close() permettent l'ouverture et la fermeture de fenêtres. message qui s'affiche par défaut dans la barre d'état du navigateur tableau qui contient les cadres présents dans la fenêtre nombre de cadres (nombre d'éléments du tableau frames La méthode nom de la fenêtre dans laquelle on se trouve fenêtre qui englobe celle dans laquelle on se trouve (s’il y en a une..) open() permet d'ouvrir une fenêtre window.open("URL","nom_fenetre","options_fenetre"); synonyme de la fenêtre actuelle (redondance ou précision?) message temporaire qui s'affiche dans la barre d'état du navigateur URL désigne l'url de la page qui sera affichée dans la nouvelle fenêtre Cette méthode est utilisable avec n'importe quel gestionnaire d'événement, directement dans le code à exécuter ou bien dans une fonction. fenêtre de plus haut niveau, celle qui contient tous les cadres (frames) fenêtre actuelle La méthode close() permet de fermer une fenêtre. Elle requiert le nom de la fenêtre comme argument. 05/03/2007 Base de données 1 GMT/FP 67 Base de données 1 GMT/FP 68 La méthode alert() Boîtes de dialogue La méthode alert() permet d'afficher dans une boîte composée d'une fenêtre et d'un bouton OK le texte qu'on lui fournit en paramètre. Une boîte de dialogue est une fenêtre qui s'affiche au premier plan suite à un événement, et qui permet • d'avertir l'utilisateur • de le confronter à un choix • de lui demander de compléter un champ pour récupérer une information Son unique paramètre est une chaîne de caractère, on peut : lui fournir directement cette chaîne de caractères entre guillemets, alert('Chaîne de caractères'); lui fournir une variable dont il affichera le contenu, alert(nom_de_la_variable); mêler les deux en concaténant les chaînes grâce à l'opérateur +. alert('Chaîne de caractères' + nom_de_la_variable); Ce type de boîte oblige une action. Les boîtes de dialogue sont un moyen simple de débuguer (repérer les erreurs), en affichant en un point donné une fenêtre contenant la valeur d'une variable. 05/03/2007 05/03/2007 Base de données 1 GMT/FP 69 La méthode confirm() 05/03/2007 Base de données 1 GMT/FP 70 La méthode prompt() La méthode prompt() fournit un moyen de récupérer une information provenant de l'utilisateur Similaire à la méthode alert(), elle permet un choix entre "OK" et "Annuler". Lorsque l'utilisateur appuie sur "OK" la méthode renvoie la valeur true, sinon elle renvoie false. La méthode prompt() requiert deux paramètres : le texte d'invite la chaîne de caractères par défaut dans le champ de saisie prompt('Posez ici votre question','chaîne par défaut'); Comme alert(), elle admet comme seul paramètre une chaîne de caractères... confirm('Chaîne de caractères'); 05/03/2007 Base de données 1 GMT/FP 71 Cette boîte d'invite retourne la valeur de la chaîne saisie par l'utilisateur, elle retourne la valeur null si aucun texte n'est saisi... 05/03/2007 Base de données 1 GMT/FP 72 12 Les méthodes et propriétés standards de l'objet Math L'objet Math L'objet Math est un objet qui a de nombreuses méthodes et propriétés permettant de manipuler des nombres et qui contient des fonctions mathématiques courantes 05/03/2007 Base de données 1 GMT/FP 73 Logarithmes et exponentielle Retourne la valeur absolue d'un nombre 05/03/2007 Retourne l'entier supérieur ou égal à la valeur donnée en paramètre Retourne l'entier inférieur ou égal à la valeur donnée en paramètre Arrondit à l'entier le plus proche la valeur donnée en paramètre Retourne le plus grand des deux entiers donnés en paramètre Retourne le plus petit des deux entiers donnés en paramètre Retourne le nombre Valeur1 à la puissance Valeur2 Retourne un nombre aléatoire compris entre 0 et 1 Retourne la racine carrée du nombre passé en paramètre Base de données 1 GMT/FP 74 Trigonométrie Math. E Math.PI Propriété qui retourne le nombre d'Euler (environ 2.718) Retourne la valeur du nombre PI, soit environ 3.1415927 Math.exp(valeur) Math.sin(valeur) Retourne l'exponentielle de la valeur entrée en paramètre Retourne le sinus de la valeur entrée en paramètre (doit être donnée en radians) Math.LN2 Math.asin(valeur) Retourne le logarithme népérien de 2 Retourne l'arcsinus de la valeur entrée en paramètre (doit être donnée en radians) Math.LN10 Math.cos(valeur) Retourne le logarithme népérien de 10 Retourne le cosinus de la valeur entrée en paramètre (doit être donnée en radians) Math.log(valeur) Math.acos(valeur) Retourne le logarithme de la valeur entrée en paramètre Retourne l'arccosinus de la valeur entrée en paramètre (doit être donnée en radians) Math.LOG2E Math.tan(valeur) Propriété qui retourne la valeur du logarithme du nombre d'Euler en base 2 Retourne la tangente de la valeur entrée en paramètre (doit être donnée en radians) Math.SQRT1_2 Propriété qui retourne la valeur de 1 sur racine de 2 (0.707) Math.atan(valeur) Math.SQRT2 Retourne l'arctangente de la valeur entrée en paramètre (doit être donnée en radians) Racine de 2 (1.414) 05/03/2007 abs() x = Math.abs(3.26) donne x = 3.26 x = Math.abs(-3.26) donne x = 3.26 ceil() x = Math.ceil(6.01) donne x = 7 x = Math.ceil(3.99) donne x = 4 floor() x = Math.floor(6.01) donne x = 6 x = Math.floor(3.99) donne x = 3 round() x = Math.round(6.01) donne x = 6 x = Math.round(3.8) donne x = 4 x = Math.round(3.5) donne x = 4 max(Nombre1, Nombre2) x = Math.max(6,7.25) donne x = 7.25 x = Math.max(-8.21,-3.65) donne x = -3.65 x = Math.max(5,5) donne x = 5 min(Nombre1, Nombre2) x = Math.min(6,7.25) donne x = 6 x = Math.min(-8.21,-3.65) donne x = -8.21 x = Math.min(5,5) donne x = 5 pow(Valeur1, Valeur2) x =Math.pow(3,3) donne x = 27 x = Math.pow(9,0.5) (racine carrée) donne x = 3 random() x = Math.random() peut donner x = 0.6489534931546957 sqrt(Valeur) x = Math.sqrt(9) donne x = 3 Base de données 1 GMT/FP 75 05/03/2007 Base de données 1 GMT/FP 76 13