Cours 7 Javascript Bases
Cours 7 Javascript Bases
Le web interactif
• Les scripts externes sont pratiques lorsque le même code est utilisé dans
de nombreuses pages Web différentes, ils ont l'extension de fichier .js .
Où placer le code JavaScript?
• Pas de règle générale.
• Le browser traite la page Html de haut en bas (y compris le code
JavaScript), donc trop de code JS au début peut retarder le chargement de
la page.
• Pour s'assurer que le script est chargé et prêt à fonctionner à toute
interaction utilisateur on prendra l'habitude de déclarer systématiquement
certains éléments (par exemple les fonctions) dans les balises d'en-tête soit
entre <HEAD> et </HEAD>.
Conseils
• Le placement de scripts dans des fichiers externes présente certains
avantages:
• Il sépare HTML et code
• Cela rend HTML et JavaScript plus faciles à lire et à maintenir
• Les fichiers JavaScript mis en cache peuvent accélérer le chargement des pages
• Placer des scripts au bas de l'élément <body> améliore la vitesse
d'affichage, car la compilation de scripts ralentit l'affichage.
Problème de compatibilité: l’élément « noscript »
• L’élément NOSCRIPT permet de fournir un contenu de remplacement
pour les navigateurs qui ne peuvent pas exécuter un script.
• Prévoir de mettre le code JavaScript au sein d’un commentaire HTML
<!-- --> afin qu’il ne soit pas affiché par un navigateur non compatible.
Exemple
<HEAD>
<SCRIPT>
//<!--
Ici code javascript
//-->
</SCRIPT>
<NOSCRIPT>Votre navigateur n’accepte pas le Javascript.</NOSCRIPT>
</HEAD>
Principes de base de JS
• Un script est une suite d’instructions
• Les instructions seront séparées par des « ; »
• Il est fortement déconseillé de séparer les instructions uniquement par des
retours à la ligne (même si la spécification l’accepte)
• Isoler le script (dans un fichier ou dans la balise script) afin de respecter
les standards du W3C. (Ex : l'usage du signe « > » pour la comparaison
serait sans cela considéré comme une balise mal fermée)
Les commentaires en JavaScript
• Portion de code non interprétée. Celle ci peut servir à simplifier la
lecture par un agent humain, à documenter, ou à désactiver
temporairement une ou plusieurs instructions (tests).
• Commentaire sur une ligne //commentaire
• Commentaire multi ligne /* Ceci est un commentaire multi ligne.
Il contient plusieurs Lignes */
Les variables
• Les variables JavaScript sont des conteneurs pour stocker des valeurs de
données.
• Le nom d'une variable ne peut être composé que de caractères
alphanumériques, "_" et "$".
• JavaScript est sensible à la casse (majuscules et minuscules)
Déclaration des variables
Les variables peuvent être déclarées de deux façons :
• Soit de façon explicite: avec les mots-clés var ou let.
Par exemple : var Num = 1;
• Soit de façon implicite: On écrit directement le nom de la variable suivi de
la valeur que l'on lui attribue.
Par exemple : Num = 1;
Portée des variables déclarées avec var
Une variable déclarée avec var sera:
• Globale, si elle est déclarée en dehors de toute fonction
• Locale, si elle est déclarée à l’intérieur d’une fonction
Portée des variables déclarées avec let
Une variable déclarée avec le mot-clé let aura une portée:
• Globale, si elle est déclarée à l’extérieur de tout bloc ou fonction
• Si elle est déclarée dans un bloc {} , elle sera locale à ce bloc
• Si elle est déclarée dans une fonction, elle sera locale à cette fonction
Déclarer une variable sans mot-clé
Une variable peut être déclarée de façon implicite, il suffit d'écrire le nom de
la variable suivie du caractère = et de la valeur à affecter :
Ex) chaine= "bonjour"
• Ces variables auront toujours une portée globale
• Même si une déclaration implicite est tout à fait reconnue par le
navigateur, il est plus rigoureux de déclarer les variables de façon explicite
avec le mot var ou let.
Déclarer une constante
• const permet de déclarer une constante. Son comportement est semblable
à let (portée locale au bloc de déclaration), sauf que:
• On doit impérativement lui attribuer une valeur
• Si elle est de type simple, on ne peut pas la réaffecter (erreur)
• Si elle est de type objet, l’objet est constant, mais ses propriétés peuvent
être modifiées.
Les types de base
• JS définit plusieurs types de base (nombres, chaines de caractères,
booléen)
• JavaScript a des types dynamiques. Cela signifie que la même variable peut
être utilisée pour contenir différents types de données
• JS est un langage faiblement typé: il ne faut pas déclarer le type de
données d'une variable.
Number
• Désigne toute valeur numérique qu'elle soit entière (ex : 5) ou à "virgule
flottante" (ex : 5.5 ).
• Il également possible d'écrire ces valeurs sur une autre base qu'en décimal,
comme par exemple en hexadécimal (0xa310) ou avec une notation
scientifique (exponentielle : 1 2 3 e 5 )
String
• Désigne toute chaîne de caractères, c'est à dire n'importe quel texte, composé
d'une suite de caractères, encadrée par de simples quottes ( ' ' ) ou doubles
quottes ( " " ).
• Vous pouvez utiliser des guillemets dans une chaîne, à condition qu'ils ne
correspondent pas à ceux entourant la chaîne
Boolean
• Désigne un élément booléen, ne pouvant prendre que deux valeurs : true
ou false.
• Les booléens sont souvent utilisés dans les tests conditionnels.
Undefined et Null
• En JavaScript, une variable sans valeur a la valeur undefined et également
le type undefined .
• Null représente ‘pas de valeur’ : on peut vider un objet en le mettant à
Null, mais il garde son type
• Undefined et Null sont égaux en valeur mais différents en type.
Tableaux JavaScript
• Les tableaux JavaScript sont écrits entre crochets.
• Les éléments de tableau sont séparés par des virgules.
• Les index de tableau commencent à zéro: le premier élément est [0], le
second est [1], etc.
Ex) var wilaya = ["Alger", "Oran", "Constantine"];
• Tous les tableau JS sont énumérés, il n’y a pas de tableaux associatifs.
Objets JavaScript
• Les objets JavaScript sont écrits avec des accolades.
• Les propriétés d'objet sont écrites sous la forme de paires nom: valeur,
séparées par des virgules.
Ex) var personne = {Nom:"John", Prenom:"Doe", age:25, };
Accès aux objets
• Les objets ont des méthodes (fonctions ou actions) et des propriétés
(caractéristiques, valeurs)
• On accède à une propriété de l’objet par la syntaxe
objet.propriété ou objet["propriété"]
• On accède à une méthode d'objet avec la syntaxe suivante:
objet.méthode()
Types de base ou type objet?
• Les types simples (chaines de caractères, tableaux, …) en JS peuvent être
aussi manipulés en tant qu’objets, si on utilise le mot clé New.
ex) new Array crée un objet tableau
• Par souci de simplicité, de lisibilité et de vitesse d'exécution, nous
préférerons l’utilisation des types simples plutôt que le type objets, en ce
qui concerne tous les types de base de JS.
Tester le type de Variable
• Pour tester le type d’une variable, nous utilisons le mot clé typeof suivi de
l'identifiant de la variable à tester.
• Cette commande renverra une chaîne de caractères contenant le type.
Nb: les types Array et Date sot considérés comme des objets, et donc typeof
retournera la valeur object. La propriété constructor permet de donner la fonction
constructeur du type de l’objet, et donc de différencier les types d’objets.
Conversions implicites de types
• Pendant un calcul, JavaScript peut modifier le type des variables afin de
pouvoir faire le calcul, mais ceci peut donner des résultats inattendus:
Exemples:
"5" + 2 retournera "52" car 2 est converti en une chaine "2"
"5" - 2 retournera 3 car "5" est converti en un nombre 5
"5" * "2" retournera 10 car "5" et "2" sont convertis en nombres
Modifier explicitement le type d’une variable
• En plus des conversions de type implicitement réalisées par JavaScript,
certaines fonctions permettent de modifier explicitement le type d’une
variable:
• String() convertit l’argument en chaine de caractères.
• Number() convertit son argument en nombre
• L’operateur monaire + permet aussi de convertir une variable en nombre:
var y = "5"; // y est de type string
var x = + y; // x est de type number
Les opérateurs
• Opérateurs logiques:
Un opérateur logique permet de réaliser un test entre deux valeurs booléennes
(true ou false) afin de renvoyer une autre valeur booléenne. Il s'agit du OU
logique " || ", du ET logique " &&", et de la négation logique " ! ".
• Opérateurs de comparaison:
Les opérations de comparaison renvoient aussi une valeur booléenne. En
revanche, les opérandes peuvent s'appliquer sur tous les types de base. Il s’agit de
(==, !=, <, <=, >, >=)
Les opérateurs-suite
• Opérateurs mathématiques:
Les opérations dites "mathématiques" comprennent les quatre opérations
arithmétiques usuelles (+,-, *, /) et le reste de division entière (%). Elles
s'appliquent sur des opérandes numériques, et renvoient une valeur numérique.
• Opérateurs d’affectation
= (affecter une valeur à la variable),
+=, -=, *=, /=, %=, &=, |=, …
L’opérateur +
• Lorsqu’il est appliqué à deux nombres, cet opérateur permet de les
additionner
• Appliqué à deux chaines de caractères, il permet de les concaténer
• Si vous utilisez cet opérateur sur un nombre et une chaîne de caractères, il
retournera une chaîne
Structures de contrôle
Comme en C ou Java:
• Tests conditionnels:
If , if else, if elseif else, switch,
• Boucles:
while, do while, for
• Contrôle de boucle:
break, continue,
L'instruction if
• L'instruction if permet d'exécuter une série d'instructions si une condition
est réalisée. La syntaxe de cette expression est la suivante :
if (condition réalisée) {
liste d'instructions
}
L'instruction if ... else
L'expression if ... else permet d'exécuter une autre série
d'instructions en cas de non-réalisation de la condition. La
syntaxe de cette expression est la suivante :
if (condition réalisée) {
liste d'instructions}
else {
autre liste d'instructions (en cas de non-réalisation de la condition).}
L'instruction if ... elseif ... else
L'expression if ... elseif ... else permet d'enchaîner une série
d'instructions conditionnelles et évite d'avoir à imbriquer des
instructions if:
if (condition réalisée) { Liste d'instructions }
elseif (autre condition réalisée) { Liste d'instructions }
...
else (dernière condition réalisée) { Liste d'instructions }
L'instruction switch
• L'instruction switch permet de faire plusieurs tests de valeurs sur
le contenu d'une même variable.. Sa syntaxe est la suivante :
switch (Variable)
{
case Valeur1: Liste d'instructions; break;
….
default: Liste d'instructions; break;
}
L’instruction switch (suite)
• Les parenthèses qui suivent le mot clé switch indiquent une expression
dont la valeur est testée successivement par chacun des "case".
• Lorsque l'expression testée est égale à une des valeurs de "case" la liste
d'instruction correspondante est exécutée.
• Le mot clé break indique la sortie de la structure conditionnelle.
• Le mot clé default définit une liste d'instructions qui sera exécutée si
l'expression n'est égale à aucune des valeurs de test.
La boucle WHILE
La syntaxe de cette expression est la suivante :
while (condition réalisée)
{ liste d'instructions };
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.
L'instruction do..While
Dans le Do..While la condition est vérifiée à la fin de chaque itération, et
non au début. Cela signifie que la boucle est exécutée au moins une fois,
puisque la condition n'est testée qu'à la fin de l'itération.
Sa syntaxe est la suivante:
Do { instructions }
While (condition);
La boucle FOR
for (expr1; expr2; expr3)
commandes
• expr1 est évaluée au début de la boucle. Au début de chaque itération,
l'expression expr2 est évaluée. Si l'évaluation vaut TRUE, la boucle
continue et l'instruction est exécutée. Si l'évaluation vaut FALSE,
l'exécution de la boucle s'arrête. À la fin de chaque itération, l'expression
expr3 est exécutée.
CONTINUE, BREAK
• L'instruction continue placée dans la boucle, permet de sauter certaines
itérations (sans mettre fin à la boucle) sous une certaine condition.
• On l'associe généralement à une structure conditionnelle (test), sinon les
lignes situées entre cette instruction et la fin de la boucle ne seraient
jamais utilisées.
• L'instruction break permet de sortir d'une structure for, foreach, while, do-
while ou switch.
Les fonctions
En JavaScript, il existe deux types de fonctions :
• les fonctions propres à JavaScript. On les appelle des "méthodes". Elles
sont associées à un objet.
• Les fonctions utilisateur écrites par le programmeur.
Fonctions utilisateurs
Déclaration
function nomfonction(param1, ..., paramN) {// code JavaScript }
Valeur de retour
function nomfonction(param1, ..., paramN) {return expression ;}
Appel
nomVariable = nomfonction(exp1, ..., expN);
Les événements HTML
• Les événements sont des "choses" qui arrivent aux éléments HTML.
• Un événement HTML peut être une action du navigateur ou de
l'utilisateur:
• Le chargement d'une page Web HTML est terminé
• Un champ de saisie HTML a été modifié
• Un bouton HTML a été cliqué
• …
• En réponse à un événement, JS permet de déclencher une action.
Evénement Description
Click Lorsque l'utilisateur clique sur un bouton, un lien ou tout autre élément
affichable.
Load Lorsque la page est chargée par le navigateur.
Unload Lorsque l'utilisateur quitte la page.
MouseOver Lorsque l'utilisateur place le pointeur de la souris sur un élément
MouseOut Lorsque le pointeur de la souris quitte un élément.
Focus Lorsqu’un élément de formulaire a le focus c-à-d devient la zone d'entrée
active
Blur Lorsqu’un élément de formulaire perd le focus c-à-d que l'utilisateur clique
hors du champs et que la zone d'entrée n'est plus active.
filter (myFunction) crée un nouveau tableau avec des éléments de tableau qui
passent un test (myFunction)
Objet document
Objet
Formulaire
Manipuler la valeur d’une zone de texte
• Soit un document contenant l'objet formulaire ‘form1’, qui contient le
champ de saisie ‘input’ et qui a comme valeur ‘value’
• Pour accéder à la valeur du champ de texte, on doit donner le chemin
complet:
document.form1.input.value;
• Javascript nous permet de lire ou d’écrire dans une zone de saisie.
Les boutons radio
• Les boutons radio sont utilisés pour noter un choix, et seulement un seul,
parmi un ensemble de propositions.
Propriétés:
• Name: indique le nom du contrôle. Tous les boutons portent le même nom.
• Index: l'index ou le rang du bouton radio en commençant par 0.
• checked : indique l'état en cours de l'élément radio
• Defaultchecked: indique l'état du bouton sélectionné par défaut.
• Value: indique la valeur de l'élément radio.
Les boutons case à cocher (checkbox)
• Les boutons case à cocher sont utilisés pour noter un ou plusieurs choix parmi
un ensemble de propositions.
Propriétés:
• Name: indique le nom du contrôle. Toutes les cases à cocher portent un nom
différent.
• Checked: indique l'état en cours de l'élément case à cocher.
• Defaultchecked: indique l'état du bouton sélectionné par défaut.
• Value: indique la valeur de l'élément case à cocher.
Liste de sélection
• Le contrôle liste de sélection vous permet de proposer diverses options sous la forme
d'une liste déroulante dans laquelle l'utilisateur peut cliquer pour faire son choix.
Propriétés:
• Name: indique le nom de la liste déroulante.
• Length: indique le nombre d'éléments visibles de la liste.
• selectedIndex indique le rang (à partir de 0) de l'élément de la liste qui a été
sélectionné par l'utilisateur.
• defaultselected indique l'élément de la liste sélectionné par défaut.
Reset et Submit
• Le contrôle Reset:
• permet d'annuler les modifications apportées aux contrôles d'un formulaire et de
restaurer les valeurs par défaut.
• Le contrôle Submit:
• Il a la tâche de transmettre toutes les informations contenues dans le formulaire à
l'URL désignée dans l'attribut ACTION de <FORM>.
• Une seule méthode est associée au contrôles Reset et Submit, c'est la
méthode onClick().
L’API HTML DOM