590 likes | 707 Views
JavaScript. Un langage dans la page. JavaScript : à quoi ça sert ?. Affiner et Animer vos pages WEB pré-calcul en fonction du navigateur contrôler finement l’affichage des pages Réagir aux Réponses de l’Utilisateur choisir différentes pages d’après un formulaire
E N D
JavaScript Un langage dans la page
JavaScript : à quoi ça sert ? • Affiner et Animer vos pages WEB • pré-calcul en fonction du navigateur • contrôler finement l’affichage des pages • Réagir aux Réponses de l’Utilisateur • choisir différentes pages d’après un formulaire • traiter les événements souris • faire du commerce électronique
Le Fonctionnement de JavaScript • Un langage interprété • Ecrit directement dans les pages WEB • Evénementiel • A base d ’objets • Faiblement typé
Le Fonctionnement de JavaScript • JavaScript n’est pas JAVA • La syntaxe est très proche de celle de C • C ’est un petit « bidule » qui a été ajouté dans les navigateurs pour faire mieux que HTML • Son principal avantage et d’ouvrir les portes du DHTML, c’est-à-dire rendre les pages plus vivante
L’historique de JavaScript • LiveScript 1.0 Inventé par Netscape • Sortie de Java ( Le Vrai) • LiveScript devient JavaScript • Microsoft sort Jscript • Le Standard en 1997 : ECMAScript ? • Une Histoire Chaotique ! • La standardisation vient juste d’émerger Netscape 6.xMS 5.5
Le standard : HTML 4.0 (en entier !) • Style + DOM = DHTML • Style : ensemble de propriétés qui permettent de changer l’aspect de la page • DOM : Modèle Objet du DocumentIl offre à JavaScript l’accès à l’ensemble du code HTML sous forme d’objet qui permettent de changer l’aspect d’une page • Rq : Le DOM est un standard de programmation, il n’est pas lié à JavaScript
Les bases de JavaScript Les règles de bases
Pour être complet : • http://www.ecma-international.org/publications/files/ECMA-ST/Ecma-262.pdf • 188 Pages ! • Est en plus les navigateurs ne sont pas standard • Il vaut mieux se baser sur l’usage que la théorie !
<html><head><title>Test</title><scripttype="text/javascript"><!--alert("Hello monde!");//--></script></head><body></body></html> <scripttype="text/javascript">Introduit le passage JavaScript <!--Place le code en commentaire //-->Ferme le commentaire alert("Hello monde!");Le code JavaScript prend place dans la page • On peut le placer dans les entêtes
html><head><title>Test</title></head><body>Avant le script<scripttype="text/javascript"><!--document.write("<h1>Bonjour, le monde</h1>\n");//--></script>Après le script</body></html> document.write("<h1>Bonjour, le monde</h1>\n");Ajoute du code HTML à la page Résultat :Avant le script Bonjour, le mondeAprès le script JavaScript prend place dans la page • On peut le placer en pleine page
JavaScript prend place dans la page • On peut placer le code JavaScript dans un fichier externe : • calcul.js : functioncarre(){ … } • externe.html : <scriptsrc="carre.js"type="text/javascript"></script> • Permet de réemployer des fonctions • Usage semblable aux feuilles de styles
JavaScript prend place dans la page • On peut le placer dans des balises HTML • <inputtype="button"value="Calculer"onClick="calcul()"> • onClick Désigne un gestionnaire d’événements • Il exécute du code JavaScript ici calcul() • C’est généralement du code simple • Ici l’appel d’une fonction
Java script dans des balises HTML • Le code placer dans un gestionnaire d’événement peut être long : • <INPUTNAME="num"onchange="if (!checkNum(this.value, 1, 10)) {this.focus();this.select();} else {thanks()}"VALUE="0"> • Mais ce n’est pas une bonne pratique • Cela ne donne pas un code lisible • A n’utiliser que si cela simplifie la code
Appeler une fonction JavaScript dans un lien hypertexte • <ahref="javascript:cadre('bas.htm','bas')"> • On remarquera l’emploi de guillemets 'SIMPLE' car les "DOUBLES" sont utilisés pour délimiter la valeur de l’attribut. • JavaScript permet l’emploi des deux, il suffit qu’ils soient appairés
Base de programmation Comme beaucoup de langage, JavaScript se base sur des fondamentaux.
Les fondamentaux de tout langage • Variables et données • Types de bases (Primitifs) • Structures de données • Instructions et Bloc d’instructions • Expressions(composées d’Opérateurs et Opérande ) • Contrôle de Flux • Eléments de Structurations • Sans oublier les commentaires !
Les commentaires • Un programme est principalement constitué d’instructions (ce qu’on lui dit de faire) • Mais il est important de noter pourquoi on lui à dit de faire cela. Ainsi si l’on doit être relu, il sera possible de comprendre le pourquoi • i=0; // la fin de la ligne est un commentairei=1;/* toutcela est uncommentaire */i=2;
Les Variables • Elles se déclarent par le mot clé var • Elles sont référencées par un nomCe nom doit débuter une lettre et ne comporter que des lettres, chiffres et _ • Exemple : varCoupure_de_10_Euros • Ne pas oublier que JavaScript est sensible à la case c-à-d aux majuscules/minuscules
Les données • C’est ce que stock les variables • Le moyen le plus simple d’écrire une données et d’utiliser une constante • Exemple : varSomme = 0; • Les données on toujours un type
Les Variables un problème en JavaScript • Les variables n’ont pas de type !!!Elles contiennent une donnée qui elle à toujours un type, elles ont le type de la donnée qu’elles contiennent. Ce type peut changer quand la donnée change ! • Elles peuvent être déclarer implicitementSomme = 0Si la variable Somme n’existe pas, une variable Somme est créée automatiquement
Les Types primitifs • Les nombres : • Entiers • Réels (virgules flottante) • Les chaînes de caractères • Les booléens
Les entiers • Simplement un nombre sans virgule :vard = 6836; // en base 10 (non nul devant) • Accessoirement on peut noter dans une base différente :varo = 015264; // en base 8 (0 devant) varh = 0X1AB4; // en base 16 (0x devant)
Les réels • Un signe + ou - • Une Partie entière • Un point et une partie décimale • Une lettre e ou E suivie d’un exposant • Exemples : • var r1 = 3.1415926536;var r2 = -54E-12;var r3 = .656E46;
Les chaînes de caractères • Une suite de caractères encadré de guillemets 'simple' ou "double". • \ sert de caractère d’échappement • Exemple : varc="012'abcd\nefgh\\ijkl\'mnop\"rstu'345";Représente :012'abcdefgh\ijkl'mnop"rstu'345
Les booléens • Ne prenent que deux valeurs :true (vrai)false (faux) • Exemple :varb = true;b = false;
Les types particuliers • Ils représentent des conditions particulières • Infinity nombre infini • NaN nombre impossible ex : 0/0 • nul type et valeur inexistant, vides • undefined variable non initialisée
Les structures de données • En java script il existe un seul type de structure : Les tableaux • En fait il en existe un second : Les objetsMais JavaScript n’est pas un vrai langage objet. Ce ne sont que des tableaux déguisés, plus précisément des dictionnaires. • Il faut envisager les objet en JavaScript comme un facilité de notation
Les tableaux • Les tableaux sont un ensemble de variables auxquelles on accède par un indicevar t=new Array(3);//tableau de 3 élémentst[0] = 'a'; // 1er élément indice 0t[1] = 'b'; // 2nd élément indice 1t[2] = 'c'; // 3iem élément indice 2 • Equivalent à :vart = newArray('a','b','c');
Les tableaux • L’on n’est pas obligé de déclarer la taille d’un tableau • On peut utilisé toutes valeurs comme indices et pas seulement un entier • varemploye=newArray();employe["nom"] = "Descartes";employe["prenom"] = "Jean";employe["residence"]= "Cahors"; • Les tableaux sont en fait des dictionnaires • On peut utiliser la notation pointé des objets :employe.nom = "Descartes";
Les objets • Si il a été montrer le lien étroit qu’il existe entre Objet et Tableau en JavaScript, il ne faut pas oublier que c’est propre à ce langage • Garder à l’esprit que JavaScript n’est pas un langage Objet • En JavaScript les Objets sont juste une commodité de notation • On abordera les Objets lors de l’évocation du DOM
Les instructions et bloc • Les instructions sont les traitements élémentaires qu’exécutera le programme • En JavaScript on sépare les instructions par un point-virgule ; • Les instructions sont exécutées dans l’ordre de leurs écritures • Il est possible de regrouper des instructions en les entourant d’accolades { } , on obtient un bloc équivalent à une instruction
Les instructions et bloc • Exemple de bloc d’instructions :{varP20 = Math.floor(Rendre / 20);Rendre = Rendre - (P20 * 20);document.formulaire.Nb20.value = P20;}
Expressions • Une instruction est l’ordre d’évaluer des Expressions • Une Expressions est simplement l’écriture de plusieurs Opérateurs et Opérandes • Exemple : (1+2)*b • + est l’Opérateur adition, il utilise les valeurs des Opérandes1 et 2 pour retourner une valeur • * est l’Opérateur multiplication, il utilise les valeurs des Opérandes (1+2) et b pour retourner une valeur
Expressions • Le résultat de l’évaluation d’une expression peut être tout type de valeurs : • Un booléen pour servir de condition à un test • Un nombre pour le résultat d’un calcul • Une chaîne de caractères pour afficher un message • Une données de type structuré pour des traitements ultérieurs …
Les types d’opérateurs • Les opérateurs peuvent être : • Unaire • Binaire • voir Ternaire • Cela désigne le nombre d’opérandesv=!a;v=a+b;v=a?b:c;
Les catégories d’opérateurs • Arithmétiques • De comparaisons (ou relationnels) • Logiques (ou booléens) • Binaires (ou bit à bit) • D’affectation • Et d’autre plus difficiles à classer
Les Opérateurs Arithmétiques • Ce sont les mêmes que ceux de mathématique • En JavaScript il existe : • Opérateurs de type binaires : • 1 + 2Somme • 1 - 2Soustraction • 1 * 2Multiplucation • 1 / 2Division • 1 % 2Modulo • Opérateur de type unaire : • - 1négation numérique (le signe) • + 1ne fait rien (mais converti en nombre)
Les Opérateurs de comparaisons • Il servent à comparer deux éléments, leurs résultats est un booléen (destiner à un test) • == égalité strict • != différence • < inférieur strict • <= inférieur ou égale • > supérieur strict • >= supérieure ou égale • Ce sont tous des opérateurs de type binaire
Les Opérateurs de comparaisons Les tests d’égalités • Les Opérateurs d’égalité == et != comparent les valeurs des Opérandes. • Ces valeurs sont convertie si nécessaire • Sur des ensembles de données structurées (Tableau, Objet), ils testent si l’on fait référence au même ensemble de données. • On ne peu tester l’égalité des données de deux ensembles qu’en faisant les comparaisons une à une. • Il existe également les opérateurs === et !== qui teste l’égalité des donnéesET de leurs types
Les Opérateurs booléens • Comme leurs nom l’indique, il opèrent sur des booléens. Ils servent à concevoir des expression logique. • Il sont principalement employer avec les Opérateurs de comparaison. Exemple :if ((1<a)&&(a<5)) {alert('a et un Nbr de 2 à 4');} • Ils appartiennent à l’algèbre booléennes
Les Opérateurs booléens • En JavaScript il existe : • De type binaire • && le « et » logique • || le « ou » logique • De type unaire • ! la négation logique (retourne vrai si c’est faux) • Rq : le caractère | s’obtient par AltGr + 6
Les Opérateurs binaire (bit à bit) • Il traitent toutes les données dans leurs format « informatique » : Les bits. • Il ont peut d’utilité en JavaScript, c’est surtout un risque de confusion avec les opérateurs de comparaison et booléens. • Il existe de type binaire :&« et », |« ou »,^« ou exclusif »,<<« décalage à gauche »,>>« décalage à droite »,>>> « décalage à droite non signé » • De type unaire : ~« négation binaire »
Les Opérateurs d’affectation = • L’affectation est un opérateur, on l’emploie généralement pour affecté une valeur à une variable. • Exemple : i=(1+2) l’expression dedroite (1+2) est évalué la valeur retourné est « copier » dans la variable de gauche i.
Opérateurs d’affectation combiner avec une opération • Il est possible de combiner une affection et une opération • Ce sont des raccourcis d’écriture • i+=1équivalent ài=i+1 • i-=1équivalent ài=i-1 • i*=1équivalent ài=i*1 • i/=1équivalent ài=i/1
Les Opérateurs unaires spéciaux • Il s’appliquent à des variables. • Ils font deux chose à la foi, une opération d’incrémentation ou décrémentation ET une affectation à leur opérande, tout en retournant un résultat. • Il peuvent être : • Préfixé : le résulta est retourné après l’opération • Postfixé : le résulta retourné est la contenu de la variable avant l’opération.
Les Opérateurs unaires spéciaux • a++ retourne la valeur de a puis incrémente a • ++aincrémente apuis retourne le résultat • a-- retourne la valeur de a puis décrémente a • --adécrémente apuis retourne le résultat
Vraiment très spécial, l’Opérateur conditionnel • C’est un opérateur de type ternaire, il évalue un test et en fonction du résultat il retourne l’une ou l’autre des autres opérandes. • a=1;b=2;c=3;d=4;x=(a>b)?c:d; // x prend la valeur 4
Les conversion implicite • JavaScript est un langage faiblement typé • Quand un opérateur doit faire une opération avec des opérateurs, ceux-ci ne sont pas nécessairement adéquats. • Il va alors les convertir de manière automatique • Exemple : "3"<25 • "3" est converti en nombre 3 avant d’effectuer la comparaison • C’est un source fréquente d’erreur et comme les variables ne sont pas typé, il n’existe pas de solution
Contrôle de flux • Par défaut un programme exécute les instructions dans l’ordre de leurs écritures, cela offre des possibilités très limitées. • Par contrôle de flux on entend la possibilité de modifier la séquence et l’ordre d’exécution. • Exemple : • exécuter une séquence alternative (si) • Répéter des instructions (tant que)
IF…ELSE... Si … Alors … • if (condition){ // exécuté si condition est vraie }else{ // exécuté si condition est fausse } • l’un ou l’autre, jamais les deux.