Archive

JavaScript – Introduction au JavaScript

This entry is part 1 of 19 in the series JavaScript - Tutoriel
  1. JavaScript, c’est quoi ?
  2. Limitations

JavaScript, c’est quoi ?

Le principal manque de l’HTML est son manque totale de dynamisme : en effet, une page HTML classique,
sans l’utilisation d’un quelconque langage de Script (PHP, Perl, VBScript, JavaScript, Asp…),
est désesperement statique, c’est à dire quel restera toujours la même, quelque soit les interactions
client-serveur.

C’est pourquoi Netscape a créé le JavaScript.
On pourrai dire que JavaScript a été créé pour faire ce que l’HTML n’est pas capable de faire.
Et pour cause, puisque le JavaScript est un langage à part entière, avec sa syntaxe, c’est convention.

Comme son nom l’indique, JavaScript est fortement inspiré de Java, un langage plus ou moins
révolutionaire.
Dans son ensemble, la syntaxe, les structures de contrôle (les boucles, les conditions…) sont exactement
les même.
Mais il y quand même petites différences :

  • JavaScript est un langage interprété. C’est à dire que le code n’est pas compilé ou semi-compilé
    comme peut l’être une applet écrite en Java
  • JavaScript est langage non typé. En effet, il n’existe pas ici de BOOLEAN, d’INTEGER, de STRING (en
    fait si, mais pas au sens où on pourrait l’entendre).
    Une variable qui contient un nombre peut tout ausi bien être du type numérique ou du type chaine de
    caractère.

Limitations

Bien que JavaScript soit un langage qui permette tout de même de faire des choses interessante, comme
des jeux, il n’en reste pas moins qu’il est très limité.
En effet, oubliez ceux qui vous on dit qu’un JavaScript peut s’emparer de votre machine et tout faire planter.
Le seul accès que JavaScript posséde sur votre machine est limité à la création de Cookies et à la lecture de ceux-ci,
ce qui n’est déja pas mal.
Quand à l’accès à la mémoire, pour des séquences en langage machine par exemple, il est à oublié, car tout simplement
impossible.

Ensuite, le bonne execution d’un script est fortement soumise au navigateur sous lequel il est
executé : suivant que le visiteur en question utilise Netscape Navigator ou Microsoft Internet
Explorer, l’architecture globale d’un script pourai dans des cas être totalement différente, notament lors
de l’utilisation de Dynamic HTML (que nous verrons plus tard).

Enfin, n’oublions pas que JavaScript est un langage interprété. Il en résulte une très faible vitesse d’execution.
Pour une utilisation classique, ce n’est pas le plus grave : l’utilisation des scripts est en général limitée à de
petites animations sur des pages ou à des verifications de formulaires.
Par contre, pour la création de jeux, c’est plus problématique…

Avant de commencer l’apprentissage du JavaScript, une bonne connaissance de l’HTML est conseillée.
En effet, l’un ne va pas sans l’autre…

Categories: JavaScript Tags:

JavaScript – Inclusion dans une page

This entry is part 2 of 19 in the series JavaScript - Tutoriel
  1. La balise <SCRIPT>
    1. Language
    2. Type
    3. Src
  2. La balise <NOSCRIPT>
  3. Le placement du Script

La balise <SCRIPT>

Quelque soit la façon dont on souhaite inclure un Script dans une page, il faut utiliser la balise
<SCRIPT> du type conteneur.

Cette balise à bien entendu plusieurs attributs que voici.

Language

Comme son nom semble l’indiquer, cet attribut définit le langage dans lequel est écrit le Script.
Et bien oui, ce n’est pas forcement du JavaScript : ce peut être du VBScript, ou du JScript (que
beaucoup de personnes confondent avec JavaScript).
En rêgle général, le langage par défaut est le JavaScript. C’est à dire que si on omet cet attribut,
le langage utilisé sera le JavaScript.
Voici quelques exemples :

<SCRIPT language=JavaScript></SCRIPT>
<SCRIPT language=VBScript></SCRIPT>
<SCRIPT language=JScript></SCRIPT>

Type

Type sert à la même chose que language, à la différence que ce dernier utilise
nom pas le nom du langage, mais son type MIME.
En d’autre termes, pour un script en JavaScript, on écrira :

<SCRIPT type=text/javascript></SCRIPT>

Src

Src permet d’inclure un script se situant sur un fichier indépendant à la page.
On l’inclut ensuite en indiquant son chemin dans cet attribut :

<SCRIPT src=/script.js></SCRIPT>

L’intêret d’inclure un script de cette façon n’est pas des moindres : on peut par exemple utiliser
un script de menu sur toutes les pages d’un même site et le mettre à jour sans pour autant avoir
à modifier chaque page.
En rêgle génerale, les fichiers annexes ont pour extension .js.

La balise <NOSCRIPT>

La balise <NOSCRIPT> n’a d’importance que pour les utilisateurs possedant un navigateur
incapable de lire les scripts, ou pour les personnes ayant désactivé l’execution des scripts, tout
simplement.
Le contenu de cette balise ne sera affiché que dans les cas énoncés ci-dessus. Par exemple :

<NOSCRIPT>
Désolé, mais votre navigateur doit être capable d'executer les scripts.<BR>
Si vous les avez désactivés, réactivez les tout de suite car vous manquez
quelque chose ;-)
</NOSCRIPT>

Le placement du Script

Un Script peut être placé à n’importe quel endroit dans la page : dans la section d’en-tête, dans
le <BODY>, ou même avant la balise <HTML> ou après
</HTML>

Un Script pouvant inter-agir sur le document HTML courant (c’est à dire qu’il peut apporter un
certain dynamisme, comme l’ajout d’images suivant des paramêtres passés par une chaine de requete
par exemple), il faut tout de même murement réflechir l’endroit de l’inclusion.
Par exemple, pour afficher une image dans la case d’un tableau, on peut écrire :

<HTML>
<HEAD>
<TITLE>Mon premier Script</TITLE>
</HEAD>

<BODY>
<TABLE>
<TR>
<TD>
<SCRIPT language=JavaScript>
document.write('<img src=image' + parseInt(Math.random() * 10) + '.gif>');
</SCRIPT>
</TD>
</TR>
</TABLE>
</BODY>
</HTML>

Ce script suppose que 10 images appelées imageX.gif ou X est un nombre
entier de 0 à 9, sont placées dans le même repertoire que la page.
Ce code présente donc une image choisie au hasard parmi 10 à chaque affichage de la page.

Categories: JavaScript Tags:

JavaScript – Un langage orienté objet

This entry is part 3 of 19 in the series JavaScript - Tutoriel

JavaScript est directement issu de Java. Java est réputé pour être le langage orientée objet
par excellence (peut-être pas autant que peut l’être un langage tel que Eiffel). Par conséquence,
JavaScript est aussi un langage orienté objet.

Mais un objet, c’est quoi ?
On ne va pas faire un cours sur la programmation orientée objet, car le sujet est trop vaste. Nous
allons juste resumer.

Dans la programmation dite classique, les données (le plus souvent des variables, c’est à dire du texte,
des nombres…) sont passées à des fonctions, des procédures, qui se chargent de les traiter.
En programmation orientée objet, les données possédent elle même des fonctions (on les appelle
des méthodes)!

Bien entendu, il est toujours possible de faire de la programmation classique, c’est à dire en passant
simplement des variables à des fonctions.

Cela étant dit, vous serez obligatoirement confronté aux objets.
Voici un document HTML très simple. Tellement simple qu’il n’y a rien dedans :

<HTML>
<HEAD>
<TITLE>Un document vide</TITLE>
</HEAD>

<BODY>
</BODY>
</HTML>

Pour accéder à ce document et pourquoi pas, modifier son apparence, JavaScript peut utiliser deux
objets, imbriqués les uns dans les autres comme suit :

    window (la fenêtre)

      document (le document :-)

Prenons pour commencer l’objet window. C’est l’objet le plus à l’exterieur d’une page Web.
C’est en quelques sortes la coquille.
Comme tout objet, il possede plusieurs méthodes, propriétés et objets (et oui, un objet peut lui
même posséder des objets).

La plus connue est sans doute la méthode alert(), souvent utilisée par les débutants :
vous l’avez reconnue ? alert() affiche une boite de dialogue (une fenêtre avec une
icone jaune) avec un texte pouvant être configurable.

Pour acceder au proprietés d’un objet, on écrit simplement le nom de cet objet, suvit d’un point (.),
puis le nom de cette propriété.
Pour utiliser la méthode alert(), nous écrirons donc :

<SCRIPT language=JavaScript>
window.alert("Hello! J'apprends le JavaScript!");
</SCRIPT>

Cliquez ici pour voir cette boite de dialoque

Une méthode peut avoir des arguments (ou des parametres, c’est comme vous voulez). Ici, l’agument
en question est la chaine de caractères (on appelle ça comme ça) "Hello! J'apprends le JavaScript!".
La méthode alert() va se charger de l’afficher dans la boite de dialoque.


Attention! JavaScript est un langage dit « case sensitive », c’est à dire qu’il fait une différence suivant
que les instructions soit écrites en caractères minuscules ou majuscules.

Ainsi, écrire ALERT() à la place de alert() provoque une erreur.

L’objet window se trouvant au sommet de la hierarchie, il peut dans la plus part
des cas être implicite. C’est à dire que l’on peut invoquer ses méthodes sans pour autant avoir
à écrire window. devant.
Ainsi :

<SCRIPT language=JavaScript>
alert("Hello! J'apprends le JavaScript!");
</SCRIPT>

Passons maintenant à l’objet document. On l’a vu, cet objet appartient à l’objet window
(on dit alors que window est le parent de document et que document
est l’enfant de window).
On accéde donc à lui ainsi :

window.document

ou bien :

document

vu que window peut être implicite.
Une des méthodes les plus utilisées de l’objet document est sans-doutes la méthode
write().
write() permet d’écrire du texte dans le document.
Lorsque l’on dit écrire, il ne s’agit pas d’écrire dans le fichier du document (index.html par
exemple), mais dans la fenêtre du navigateur.
Ainsi, on peut écrire :

<HTML>
<HEAD>
<TITLE>Mon Xème Script</TITLE>
</HEAD>

<BODY>
<SCRIPT language=JavaScript>
document.write("<H2 align=center>Ceci est un titre écrit grace à un Script</H2>");
</SCRIPT>
</BODY>
</HTML>

Vous l’aurez compris, ce Script permet d’écrire un titre de niveau 2 (<H2>)
dans le document.

Categories: JavaScript Tags:

JavaScript – Les commentaires

This entry is part 4 of 19 in the series JavaScript - Tutoriel
  1. Les commentaires sur une ligne (//)
  2. Les commentaires sur plusieurs lignes (/* */)

Avant d’aller plus loin, nous allons tout de suite étudier les commentaires en JavaScript.
Comme son nom l’indique, un commentaire permet de… commenter!
Et oui, même si un script dépasse rarement la vingtaine de lignes (à part pour les jeux), il peut parfois
être utile de laisser des commentaires pour pouvoir s’y retrouver quelques jours ou quelques mois
plus tard (ou même pour informer certains visiteurs curieux qui auraient l’odace d’observer votre
code HTML).

Dans un commentaire, on peut écrire ce que l’on veut. Rien ne sera pris en compte par le navigateur.
Lors du débogage d’un script, souvent compliqué en raison de l’abscence d’IDE valable, ils peuvent être
d’un bon recours pour pouvoir dissimuler un passage du script, sans pour autant avoir à l’effacer pour devoir
le ré-écrire plus tard si celui-ci était finalement valide.

Les commentaires sur une ligne (//)

Les commentaires sur une ligne sont la plupart du temps utilisés pour écrire des annotations en fin de ligne.
Ils commencent par //. Tout ce qui suit ce double slash sera ignoré :

<SCRIPT language=JavaScript>
// Ceci est un commentaire et je peux écrire ce que je veux
alert('Bonjour');// Ceci est un message d'alerte qui dit bonjour
</SCRIPT>

Les commentaires sur plusieurs lignes (/* */)

Les commentaires sur plusieurs lignes commencent par /* et s’achévent par */. Tout
ce qui est placé entre ces deux élements est tout simplement ignoré :

<SCRIPT language=JavaScript>
/* Le script suivant
n'a vraiment aucun intéret
et c'est donc pourquoi nous
allons le passer en
commentaires */

/*
alert('Bonjour!');
alert('Tu vas bien ?');
alert('Parce que moi, oui :-) ');
*/
</SCRIPT>
Categories: JavaScript Tags:

JavaScript – Ecrire dans le document

This entry is part 5 of 19 in the series JavaScript - Tutoriel

On a vu que JavaScript était capable d’agir sur le document en cours avec la méthode write()
de l’objet document.
Nous allons maintenant approfondir un peut plus.
Pour écrire Bonjour! dans le document, nous allons écrire :

document.write("Bonjour!");

Déjà, remarquons le point virgule (;) à la fin de la ligne.
Comme dans beaucoup de langages (Pascal, C/C++, Java, PHP…), le point virgule est obligatoire
à la fin de chaque instruction.
Si on l’oublie, une erreur se produit.

La méthode write() écrit la chaîne de caractères qui lui est passée en argument
dans le document.
Ici, la chaîne de caractères c’est Bonjour!.
Une chaîne de caractères peut être placée au choix, soit entre guillemets (« ), soit entre
apostrophes ().
Ainsi, les deux lignes suivantes sont équivalentes :

document.write("Bonjour!");// Avec des guillemets
document.write('Bonjour!');// Avec des apostrophes

Cette possibilité de choix entre les guillemets et les apostrophes peut être un sérieux avantage,
par exemple lorsque l’on utilise des balises HTML dans une chaine de caractères :

document.write('<h3 align="center">Un titre au centre</h3>');

Dans cette exemple, si on avait voulu quand même utiliser des guillemets, on aurrait du faire
précédé les guillemets internes du caractère back-slash (\) :

document.write("<h3 align=\"center\">Un titre au centre</h3>");
// Sortie : <h3 align="center">Un titre au centre</h3>

Cette remarque est aussi valable pour les apostrophes :

document.write('It\'s beautiful !');
// Sortie : It's beautiful !

En fait, le back slash veut dire : « le caractère qui suit est spécial ».
Ce qui fait que si vous devez écrire le back slash lui même dans le document, il faudra le doubler :

document.write("c:\\localhost\\phmyadmin\\index.php");
// Sortie : c:\localhost\phmyadmin\index.php

Mais le back slash a bien d’autre significations dans les chaînes de caractères. Reportez-vous au
tableau suivant pour connaitre leur signification :

Les séquences escapes
Séquence Signification Exemple de code
\n Avec un n comme New line.
Il impose un saut de ligne.
document.write( »On saut cinq lignes\n\n\n\n\net on continue ! »);
\t Avec un t comme Tabulation.
Il impose une…tabulation.
document.write( »\tUn retrait, c’est mieux! »);

Sachant que dans un document HTML, les espaces, les tabulations et les sauts de ligne ne sont pas
pris en compte, on peut s’interroger sur leur utilité.
En fait, ils servent dans la plupart des cas aux deux choses suivantes :

  • Les boîtes de dialogue (que nous étudierons plus tard) :
    alert("Et une mise à la ligne\nUne !\n\tEt une tabulation!");
    

    Cliquez-ici

  • Au sein d’une balise <PRE> :
    <PRE>
    <SCRIPT language=JavaScript>
    document.write("Liste pour le repas\n");
    document.write("\t1. Pizza\n");
    document.write("\t2. Bière\n");
    document.write("\t3. et bière\n");
    </SCRIPT>
    </PRE>
    

Une variante de la méthode est la méthode writeln().
Ceux qui pratiquent le Pascal l’auront deviné, les autres l’apprendront : writeln()
fait la même que write(), sauf que writeln() ajoute un caractère \n
à la fin de la chaîne de caractère.
La aussi, cette méthode est utilisée le plus souvent à l’intérieur d’une balise <PRE>

Categories: JavaScript Tags:

JavaScript – Les variables

This entry is part 6 of 19 in the series JavaScript - Tutoriel
  1. Rêgles générales
  2. Les types

Rêgles générales

L’utilisation des variables avec JavaScript est simplifiée au maximum.
Pour déclarer une variable, on utilise le mot-clef var, suivit du nom de la variable qui
doit être un identificateur correct.
Un identificateur peut être composé de tout les caractères de l’alphabet, plus les chiffres,
les caractères de soulignement et le caractère dollars ($). Toutefois, un identificateur
ne peut pas commencer par un chiffre.

Donc, pour utiliser une variable que nous appelerons webmaster, nous écrirons :

var webmaster;// déclaration de la variable webmaster.
// Ne pas oublier le point virgule !

Ensuite, on peut utiliser cette variable comme dans n’importe quel autre langage.
En lui affectant une valeur dans un premier temps avec le caractère égal :

var webmaster;

webmaster = "Marco Pantani";// Là aussi, il y a un point virgule!
Remarque :
Si vous connaissez déjà un autre langage, vous remarquerez que JavaScript est un langage non typé
et qu’il n’y a pas besoin de déclaration de type.
Une variable peut tour à tour recevoir une chaîne de caractères ou un nombre :

var mavariable;

mavariable = "onze";// Une chaine de caractères
mavariable = 11;// Un nombre

Ceci est strictement impossible avec d’autres langages.

JavaScript permet en quelque sortes de « concaténer » ces deux lignes (la déclaration de la variable
et l’initialisation de celle-ci) en une seule.
En effet, ici on a dans un premier temps déclaré la variable, puis on lui a assigner une valeur
initiale ("Marco Pantani") dans un deuxième.
Perte de temps. Ecrivons plutôt :

var webmaster = "Marco Pantani";// Déclaration et initialisation
// de la variable 'webmaster'
// en une seule ligne

Ensuite, on peut utiliser cette variable comme n’importe quel autre donnée :

var webmaster = "Marco Pantani";

document.write(webmaster);// Sortie -> Marco Pantani

Le mot-clef var n’est pas obligatoire. Si on avait écrit :

webmaster = "Marco Pantani";

document.write(webmaster);

Le résultat aurait été identique.
Par contre, si la variable n’avait pas été initialisée, une erreur se serait produit, comme le
montre l’exemple suivant :

document.write(webmaster);// Une erreur se produit !

C’est pourquoi il est conseillé de toujours déclarer les variables, même si celle ci ne sont
pas initialisées.
L’exemple suivant ne produit pas d’erreur :

var webmaster;

document.write(webmaster);// Sortie -> undefined

La valeur renvoyée est undefined, (indéfini en d’autres termes). Pourquoi ? Et bien
parce que la variable n’est pas définie, justement !

Nous verrons par la suite comment agir sur le contenu de ces variables.

Les types

Bien que JavaScript soit un langage non-typé, il posséde quand même des types (ça se complique…).
Par exemple, le contenu de la variable suivante :

var onze="11";// C'est une chaîne de caractère

Peut être considéré comme un nombre ou comme une chaîne de caractères.
Dans JavaScript, il n’y a que 6 types de variables :

Nom du type Description Exemples
undefined Variable indéfinie var mavariable;
boolean Variable logique. 2 états possibles true ou false var mavariable=true;
var mavariablebis=false;
number Variable numérique var variable=666;
string Variable chaîne de caractères var variable="Marco Pantani";
function Fonction var variable=function(){}
object Objet var variable={};

Une question légitime serait : « À quoi ça sert de connaitre le type d’une variable si on ne peut
pas le définir ? ».
On ne peut pas le définir, certes, puisque c’est l’interpreteur JavaScript qui s’en charge lors
de l’assignation d’une valeur à cette même variable.
Par contre, on peut le connaitre grace à l’opérateur typeof. typeof renvoi
une chaîne de caractères contenant le type de la variable transmise en argument.
On peut donc écrire :

var varindefine;
var varboolean=true;
var varnumber=666;
var varstring="Marco Pantani";
var varfunction=function(){}
var varobjet={};

document.writeln("<pre>");// Pour ne pas se casser la tête, on utilise <pre>
document.writeln("<b>varindefinie</b> est du type " + typeof varindefinie);
document.writeln("<b>varboolean</b> est du type " + typeof varboolean);
document.writeln("<b>varnumber</b> est du type " + typeof varnumber);
document.writeln("<b>varstring</b> est du type " + typeof varstring);
document.writeln("<b>varfunction</b> est du type " + typeof varfunction);
document.writeln("<b>varobjet</b> est du type " + typeof varobjet);
document.writeln("</pre>");
Categories: JavaScript Tags:

JavaScript – Opérateurs

This entry is part 7 of 19 in the series JavaScript - Tutoriel
  1. Opérateurs arithmétiques
  2. Opérateurs d’assignation
  3. Opérateurs d’incrémentation / décrémentation
  4. Opérateurs logiques
    1. Le non !
    2. Le ou ||
    3. Le et &&
  5. Opérateurs binaires
    1. Le non ~
    2. Le ou |
    3. Le et &
    4. Le ou exclusif ^
    5. Le décalage de bits << et >>
  6. Opérateurs relationnels

JavaScript posséde une multitude d’opérarteurs lui permetant d’effectuer des opérations (!) mathématiques,
logiques, de comparaison, d’assignation…

Opérateurs arithmétiques

Pour réaliser les 4 opérations, JavaScript utilise les opérateurs suivants :

Opérateur Fonction Exemple de code Résultat
+ Addition document.write(5 + 5); 10
- Soustraction document.write(25 – 10); 15
* Multiplication document.write(5 * 5); 25
/ Division document.write(63 / 7); 9
% Modulo (reste d’une division) document.write(20 % 3); 2

On peut bien sur utiliser ces opérateurs avec des variables :

var a=5;
var b=1;
var c=10;

a = a + b * c;

document.write(a);// Sortie -> 5 + 1 * 10 = 15

Opérateurs d’assignation

Vous connaissez déjà un des ces opérateurs : l’opérateur =.
Vous serez peut-être surpris mais il n’est pas tout seul.
Prenons un exemple. Pour ajouter 5 à une variable et enregistrer le résultat de cette opération
dans cette même variable, vous serez certainement tenté d’écrire :

var a=10;

a = a + 5;// a = 15

Ce n’est pas faux et c’est même tout à fait correct.
Mais JavaScript peut faire mieux dans ce cas là avec l’opérateur += qui ajoute les opérandes
de droite à la variable placée à gauche et place le résultat dans cette même variable.
Ainsi, on peut écrire :

var a=10;

a+=5;// Reviens à écrire a = a + 5

Cette possibilité est étendue aux 4 autres opérateurs :






Opérateur Exemple Equivalence
+=
a += b;
a = a + b;
-=
a -= b;
a = a – b;
*=
a *= b;
a = a * b;
/=
a /= b;
a = a / b;
%=
a %= b;
a = a % b;

Opérateurs d’incrémentation / décrémentation

Prenons la variable x. Nous voulons lui ajouter 1 et seulement 1.
On peut écrire :

var x=0;

x += 1;// Reviens à écrire x = x + 1

Là aussi JavaScript permet d’aller encore plus vite en écrivant à la place :

var x=0;

x++;// Reviens à écrire x += 1, ce qui revient à écrire x = x + 1

La décrémentation (enlever une unité) se passe de la même façon, mais avec au lieu de
++ :

var x=0;

x--;// Reviens à écrire x -= 1, ce qui revient à écrire x = x - 1

Attention ! Il convient de distinguer la pré-incrémentation / décrémentation de la
post-incrémentation / décrémentation.
Lors de cette dernière, l’opérateur est placé après la variable, comme dans :

var x=0;

x++;// Post-incrémentation

Pour effectuer une pré-incrémentation, on écrira :

var x=0;

++x;// Pré-incrémentation

Quel est l’intérêt ?
Voici un exemple :

var a=5;
var b=5;
/*  a et b ont tout les deux pour valeur 5  */

document.writeln("<pre>");
document.writeln("a++ = " + a++);// Sortie -> a++ = 5
document.writeln("++b = " + ++b);// Sortie -> ++b = 6
document.writeln("</pre>");

La voilà la différence :

  • Dans le 1er cas, la variable est incrémentée après avoir renvoyée sa valeur
  • Dans le 2ème, la variable est incrémentée avant d’avoir renvoyée sa valeur

Opérateurs logiques

Les opérateurs logiques prennent tout leurs sens avec les variables du type boolean.
Une variable booléenne ne peut prendre que 2 états : true (allumé) ou false (éteint).
true est l’inverse de false.
Il existe 3 opérateurs logiques : le non (!), le et (&&) et le ou (||).

Le non !

Le non effectue une inversion. On utilise le point d’exclamation (!).

Argument Résultat
false true
true false

Exemple :

var variable=true;

document.write(!variable);// Sortie -> false
document.write(!!variable);// Sortie -> true

Le ou ||

Le ou renvoi true si l’une des deux opérandes au moins est true.
On utilise l’opérateur ||.

1er argument 2ème argument Résultat
false false false
false true true
true false true
true true true

Exemple :

document.write(false || false);// Sortie -> false
document.write(false || true);// Sortie -> true
document.write(true || true);// Sortie -> true

Le et &&

Le et renvoi true si les des deux opérandes sont true.
On utilise l’opérateur &&.

1er argument 2ème argument Résultat
false false false
false true false
true false false
true true true

Exemple :

document.write(false && false);// Sortie -> false
document.write(false && true);// Sortie -> false
document.write(true && false);// Sortie -> false
document.write(true && true);// Sortie -> true

Opérateurs binaires

Pour bien comprendre à quoi servent les opérateurs binaires, vous devez tout d’abord savoir qu’est
ce que le binaire. C’est pourquoi je vous invite à lire ceci : La numération.
Ensuite, ce qui suit deviendra compréhensible :-)

Le non ~

Le non ne permet non pas d’inverser tout les bits d’un nombre, mais d’effectuer le complément
à deux de ce nombre. On utilise l’opérateur ~ :

var nombre=3;

nombre = ~ nombre;
document.write(nombre);// Sortie -> -4

Le ou |

Le ou effectue un ou (!) entre chaques bits des deux opérandes. On utilise l’opérateur
| :

var a=2;// 2 -> 10 en binaire
var b=1;// 1 -> 01 en binaire
var resultat=a | b;
//1 | 0 -> 1
//0 | 1 -> 1
// resultat = 11 = 3
document.write(resultat);// Sortie -> 3

Le et &

Comme le ou, le et effectue un et entre chaques bits des deux opérandes. On utilise l’opérateur
& :

var a=255;// 255 -> 11111111 en binaire
var b=170;// 170 -> 10101010 en binaire
var resultat=a & b;
//1 & 1 -> 1
//1 & 0 -> 0
//1 & 1 -> 1
//1 & 0 -> 0
//1 & 1 -> 1
//1 & 0 -> 0
//1 & 1 -> 1
//1 & 0 -> 0
// resultat = 10101010 = 170
document.write(resultat);// Sortie -> 170

Le ou exclusif ^

Le ou exclusif effectue un ou exclusif (en l’aurait deviné :-) ) entre les bits des deux opérandes. On
utilise l’opérateur ^ :

var a=255;// 255 -> 11111111 en binaire
var resultat = a ^ a;
//1 ^ 1 -> 0
//1 ^ 1 -> 0
//1 ^ 1 -> 0
//1 ^ 1 -> 0
//1 ^ 1 -> 0
//1 ^ 1 -> 0
//1 ^ 1 -> 0
//1 ^ 1 -> 0
// resultat = 00000000 = 0
document.write(resultat);// Sortie -> 0

Le décalage de bits << et >>

On peut facilement décaler les bits d’un nombre vers la gauche ou la droite d’un certain nombre
de bits.
Pour décaler les bits vers la gauche, on utilise l’opérateur <<. Pour les décaler vers
la droite, c’est >> qui est utiliser.
Dans tout les cas, on place à gauche de l’opérande le nombre à modifier, et à sa droite le nombre
de bits à décaler :

var a=3;// 3 -> 11 en binaire

a = a << 4;
// On décale de 4 rang vers la gauche, donc :
// 11 - > 110000 = 48
document.write(a);// Sortie -> 48

a = a >> 8;
// On décale de 8 rand vers la droite, donc :
// 110000 -> 0
document.write(a);// Sortie -> 0

À noter que comme pour les opérateurs d’affectation énoncés ci-dessus, ces deux opérateurs peuvent dans
certains cas être résumés ainsi :

Opérateur Exemple Equivalence
<<= a <<= b; a = a << b;
>>= a >>= b; a = a >> b;

L’exemple précedent devient alors :

var a=3;

a <<= 4;// Equivaut à a = a << 4
document.write(a);

a >>= 8;// Equivaut à a = a >> 8;
document.write(a);

Opérateurs relationnels

Les opérateurs relationnels permettent de comparer des nombres, mais aussi des chaînes de caractères
et des types de variables.
Voici un tableau récapitulatif :

Opérateur Description Exemple de code Résultat
== Egualité var a=25;
var b= »25″;
document.write(a==b);
true
=== Identité var a=25;
var b= »25″;
document.write(a===b);
false
!= Inégalité var a=120;
var b=350;
document.write(a != b);
true
!== Non-identité var a=25;
var a= »25″;
document.write(a !== b);
true
< Inférieur var a=10;
var b=100;
document.write(a < b);
true
<= Inférieur ou égal var a=100;
var b=100;
document.write(a <= b);
true
> Supérieur var a=100;
var b=10;
document.write(a > b);
true
>= Supérieur ou égal var a=100;
var b=100;
document.write(a >= b);
true

Ces opérateurs sont également utilisables avec les chaines de caractères.
Pour les opérateurs supérieur, supérieur ou égal, inférieur et inférieur ou égal, les chaines
sont comparées par rapport à leur rang alphabétique.

Categories: JavaScript Tags:

JavaScript – La structure conditionnelle

This entry is part 8 of 19 in the series JavaScript - Tutoriel
  1. if…else
  2. ?:

if…else

La structure conditionnelle permet d’influer sur le déroulement du script suivant…certaines
conditions!
Si vous connaissez un autre langage, vous reconaitrez le classique if et else.
if execute une instruction ou un bloc d’instruction si la condition est évaluée
à true.
Voici un exemple :

var age=18;

if(age >= 18)document.write('Vous êtes majeur');// Affiche 'Vous êtes majeur'
// si la variable age est
// supérieure à 18

Nous l’avons vu à la page précedente : l’opérateur >= renvoi true
si l’opérande de gauche est supérieur ou égale à l’opérande de droite.
C’est le cas ici, puisque la variable age est initialisée à 18. Le script affiche
donc Vous êtes majeur.
On peut d’ailleurs le vérifier simplement, en assigant une valeur inférieure à 18 à la variable
age :

var age=10;// 10 au lieu de 18

if(age >= 18)document.write('Vous êtes majeur');// Affiche 'Vous êtes majeur'
// si la variable age est
// supérieure à 18

Dans ce cas, rien est affiché.
Mais on peut executer une instruction alternative, au cas où la condition if n’est pas satisfaite.
On utilise else.
Nous pouvons donc completer notre programme ainsi :

var age=10;

if(age >= 18)document.write('Vous êtes majeur');// Si age <=18 ...
else document.write('Vous êtes mineur');// Sinon ...

Dans ce cas là, si la variable age est supérieure ou égale à 18, le script affiche
Vous êtes majeur. Sinon, il affiche Vous êtes mineur.

Si vous connaissez le QBasic, vous serez peut-être surpris d’apprendre qu’il n’y a pas de
ELSEIF.
On peut contourner l’obstacle en combinant un else et un if :

if(age < 18)document.write("Vous êtes trop jeune");
else if(age > 70)document.write("Vous êtes trop vieux");
else if(age < 0)document.write("Vous n'êtes pas encore né !");
else document.write("C'est bon");

Nous avons vu comment executer une instruction quand une condition est vraie. Mais si on avait
plusieurs instructions?
Au lieu de répeter plusieurs fois le même if, on peut utiliser ce qu’on appelle
un bloc d’instruction.
Un bloc d’instruction commence par un crochet (ou une accolade, comme vous voulez) : {, et
se termine par un…crochet (dans l’autre sens!) : }
Voici par exemple un bloc d’instruction :

// on commence le bloc d'instruction avec {
{
document.write("Cette ligne est comprise dans un bloc d'instructions");
document.write("Celle-ci aussi");
}
// on le termine avec }

Employé ainsi, ça n’a que peu d’intêret. Avec un if...else, ça en a un peu plus :

/*Horoscope du 3 au 9 juin 2001 de Christine Haas*/
var signe=prompt("Quel est votre signe astrologique en minuscules et sans accents");
var texte="";

if(signe=="belier"){
texte+="Après six mois de bons et loyaux services, Vénus (amours,<br>";
texte+="plaisirs) vous quitte ce mercredi pour entrer chez votre<br>";
texte+="voisin le Taureau. Pendant quelque temps, vous serez plus<br>";
texte+="possessif, plus jaloux, plus tendre aussi...<br>";
}
else if(signe=="taureau"){
texte+="Jeudi et vendredi seront les meilleures journées de la semaine,<br>";
texte+="surtout si vous êtes né en avril. Vous vous sentirez en<br>";
texte+="harmonie avec le monde et avec ceux que vous aimez. Une<br>";
texte+="surprise agréable est au menu.<br>";
}
else if(signe=="gemeaux"){
texte+="Né fin mai : Saturne (freins, limites) est sur votre Soleil<br>";
texte+="et vous le sentirez davantage entre lundi et mardi. Vous<br>";
texte+="aurez probablement un sentiment de solitude, ou une conscience<br>";
texte+="accrue des dures réalités de la vie.<br>";
}
else if(signe=="cancer"){
texte+="Venus (amours, plaisirs) entre mercredi dans un signe en<br>";
texte+="harmonie avec le vôtre. Pendant pluseurs semaines, sachez<br>";
texte+="mettre du piment dans votre vie quotidienne. Sortez de la<br>";
texte+="routine et vos amours seront flamboyantes!<br>";
}
else if(signe=="lion"){
texte+="Lundi et mardi seront positifs pour vos amours, mais par la<br>";
texte+="suite Vénus rentrera dans le secteur attribué à la carrière<br>";
texte+="professionnelle, ce qui signifie que l'amour passera au second<br>";
texte+="plan pour beaucoup d'entre vous.<br>";
}
else if(signe=="vierge"){
texte+="Lundi et mardi ne seront pas les meilleurs jours de cette<br>";
texte+="semaine. Soit vous vous sentirez seul ou mal entouré, soit<br>";
texte+="vous remâcherez de sombres idées. Ne tombez pas dans votre<br>";
texte+="piège habituel : douter de vous-même.<br>";
}
else if(signe=="balance"){
texte+="Né autour du 14 octobre : vous pourrier avoir de belles<br>";
texte+="opportunités à saisir dans les jours qui viennent, car le<br>";
texte+="Soleil et Jupiter (chances) vont se donner la main pour élargir<br>";
texte+="votre horizon professionnel ou affectif.<br>";
}
else if(signe=="scorpion"){
texte+="Vénus (amours) change de signe mercredi et se trouvera face au<br>";
texte+="vôtre. Si vous êtes né en octobre, vous serez les premiers à<br>";
texte+="bénéficier de sa nouvelle position : rencontres, invitations et<br>";
texte+="offres seront au rendez-vous.<br>";
}
else if(signe=="sagittaire"){
texte+="Ça bouge aussi côté cœur, puisque Vénus change de signe<br>";
texte+="mercredi. Elle occupera votre secteur du travail, ce qui n'est<br>";
texte+="guère passionnant pour vos amours. Elles s'enliseront un peu<br>";
texte+="dans le quotidien.<br>";
}
else if(signe=="capricorne"){
texte+="C'est le moment de faire le ménage dans vos amours, de les<br>";
texte+="sortir du placard où vous les aviez rangées depuis février,<br>";
texte+="et de faire revivre leurs jolies couleurs. Vous en aurez<br>";
texte+="l'opportunité jeudi et vendredi.<br>";
}
else if(signe=="verseau"){
texte+="Vénus (amours, plaisirs) rentre mercredi dans votre secteur de<br>";
texte+="la famille et de la maison. Une occasion d'être plus <br>";
texte+="démonstratif envers ceux que vous aimez, et de faire des achats<br>";
texte+="pour agrémenter votre décor.<br>";
}
else if(signe=="poissons"){
texte+="Fort heureusement, Vénus (amours, bien-être) vient à votre<br>";
texte+="secours, surtout si vous êtes né en février. Elle occupera un<br>";
texte+="signe ami à partir de mercredi : vous aurez un soutien tendre<br>";
texte+="de votre entourage.<br>";
}
else{
texte+="heu...";
}

document.write(texte);

Ne vous préoccupez pas de l’instruction prompt, sur la première ligne. Nous l’étudierons
plus loin.
Cette exemple affiche l’horoscope, suivant la variable signe. Peut importe l’utilité
ou l’interet d’un tel script : c’est juste pour l’exemple…

? :

Si vous pratiquez le Visual Basic, vous connaissez certainement l’instruction IIF.
?: se comporte exactement de la même façon. Il prend trois arguments :

  • Le premier est une condition
  • Le deuxième est la valeur à renvoyer si la condition est true
  • Le troisième est la valeur à renvoyer si la condition est false

Voici un exemple :

var nombre=5;
var etat = (nombre % 2 == 0 ? "paire" : "impaire");
//             CONDITION    ? SI VRAI : SI FAUX

document.write("Le nombre " + nombre + " un est nombre " + etat);
Categories: JavaScript Tags:

JavaScript – Les cas

This entry is part 9 of 19 in the series JavaScript - Tutoriel

Dans certaines situations, l’utilisation d’une structure conditionnelle en if...else
n’est pas des plus pratique, nottament lorqu’il s’agit de tester le contenu d’une seule variable.
JavaScript posséde une autre structure de contrôle : switch.
switch va tester la valeur d’une variable et va executer les instructions qui correspondent
à ce cas.

Les cas sont délimités par le mot-clef case, suivit de la valeur possible de la variable, puis les
doubles points (:).
Si la valeur de la variable testée correspond à cette valeur, les instructions qui suivent sont executées.

Voici un exemple :

var combien=5;// Assignez le nombre que vous voulez

switch(combien){
case 0 :// Si combien == 0
document.write("Vous connaissez la sortie...");
break;// On sort du switch

case 1 :// Si combien == 1
document.write("Une table pour une personne, une !");
break;// On sort du switch

case 2 :// Si combien == 2
document.write("Haha! Un dîner en tête à tête ?");
break;// On sort du switch

case 7 :// Si combien == 7
// Pas de break on ne sort pas du switch

case 13 :// ou Si conbien == 13
document.write("Désolé, ici on est superstiteux ");
document.write("et on ne sert pas se nombre de couverts");
break;// On sort du switch

default :// Sinon...
// On teste avec des if...else
// pour trouver le cas approprié
if(combien > 2 && combien < 13){
document.write("C'est un repas en famille ?");
}
else if(combien > 12){
document.write("Mais vous êtes une armée !");
}
else{
document.write("Très drôle");
}
break;
}

Détaillons.
On commence par assigner une valeur à la variable combien. Ici, on a mis 5,
mais vous pouvez changer.
On rentre dans une structure switch. Entre parenthèses, c’est la variable a tester. Ici,
c’est la variable combien.
Ensuite, c’est l’énonciation des cas. Notez au passage que nous sommes dans un bloc d’instructions :
tout les cas sont entre les accolades du switch.
Le premier cas est le cas 0 (case 0 :). Si la variable combien est
évaluée à 0, la ou les instructions qui suivent seront executées. Ici, la chaîne de caractères
"Vous connaissez la sortie..." sera écrite dans le document.
Nous arrivons ensuite à l’instruction break.
break permet de sortir d’un bloc d’instruction. Dans notre exemple, vu que le cas
zéro a été traité, on sort donc du switch.

Ici, si break n’est pas appelé, les instructions suivantes sont executées.
Dans certains cas, ça peut-être utile, comme pour case 7 : et case 13 :.
Dans ces deux cas, nous devons executer les mêmes instructions. Plutôt que de ré-écrire deux fois
la même chose, nous avons choisi de traitrer le case 7 : au dessus du case 13 :.
Comme il n’y a pas de break dans le case 7 :, les instructions du case 13 :
sont aussi executées.

Il reste le cas default. Ce cas est traité si aucun des cas précédent ne correspond.
Ici, nous avons choisi de tester une nouvelle fois la variable combien.

Categories: JavaScript Tags:

JavaScript – Les boucles

This entry is part 10 of 19 in the series JavaScript - Tutoriel
  1. La boucle while
  2. La boucle do..while
  3. La boucle for
  4. La boucle for…in
  5. break et continue

L’utilisation de boucles est un bon moyen pour répeter des instructions plusieurs fois. Dans JavaScript, il
en existe 4 sortes : while, do…while, for et for…in.

La boucle while

La boucle while execute une instruction ou un bloc d’instructions TANT QUE une instruction est
vrai, c’est à dire qu’elle est évaluée à true.
Voici un exemple :

var i=0;

document.writeln("<pre>");
document.writeln("Apprenons la table de 8");
while(i < 10){// TANT QUE i < 10, on execute les instructions suivantes :
document.writeln(i + " fois 8 = " + i * 8);
i++;
}
document.writeln("</pre>");

On peut également executer une seule instruction :

var i=0;

document.write("Avant, i vaut " + i + "<br>");
while(i < 10)i++;
document.write("Après, i vaut " + i);

La boucle do..while

La boucle do...while est en tout points identique à la boucle while, à ceci près que la condition
est évaluée à la fin de la boucle, alors que la boucle while l'évalue au début de
la boucle.
Pour bien comprendre, observons le code suivant :

var EstMineur=false;

while(EstMineur){
var age=prompt("Quel est votre âge ?");

EstMineur = age < 18;// si age inférieur à 18, EstMineur = true
}
document.write("C'est bon, vous êtes majeur");

Faisons l'impasse sur l'instruction prompt. Nous l'étudierons par la suite.
Ici, la variable EstMineur est initialisée à false. La condition n'est donc plus
vrai, ce qui fait que la boucle while n'est pas executée, vu que l'expression est testée avant
de débuter la boucle.
Avec une boucle do...while, l'execution du script aurait été différente :

var EstMineur=false;

do{
var age=prompt("Quel est votre âge ?");

EstMineur = age < 18;// si age inférieur à 18, EstMineur = true
while(EstMineur);
document.write("C'est bon, vous êtes majeur");

Ici, la variable EstMineur est testée en fin de boucle. Les instructions sont donc executées au
moins une fois
.

La boucle for

La boucle for permet d'executer une instruction ou un bloc d'instructions pendant un certain nombre de
fois.
Voici la syntaxe de cette boucle :

for(initialisation; condition; incrementation){
[Instructions]
}

Remarquez que les arguments sont séparés par des points-virgules et non pas des virgules.
Reprenons notre exemple de départ, où il s'agissait de calculer la table de 8.
Dans ce cas là, l'utilisation de la boucle for est plus astucieux :

document.writeln("<pre>");
document.writeln("Apprenons la table de 8");
for(var i=0; i < 10; i++)document.writeln(i + " fois 8 = " + i * 8);
document.writeln("</pre>");

Si vous connaissez un autre langage tel que le Basic ou le Pascal, vous observerez que la boucle for
du JavaScript est beaucoup plus souple.
En effet, tout les arguments (initialisation, condition et incrementation) peuvent être optionnels. Bien que l'interet
sous discutable, c'est tout de même possible.
Ensuite, vous pouvez très bien spécifier plusieurs variables :

document.writeln("<pre>");
document.writeln("Apprenons la table de 8");
for(var i=0, j=10; i < 10; i++, j--){
document.write(i + " fois 8 = " + i * 8 + "\t");
document.writeln(j + " fois 8 = " + j * 8);
}
document.writeln("</pre>");

La boucle for...in

La boucle for...in est spécifique aux objets. Elle permet de passer en revue toutes les propriétés d'un
objet.
Cette boucle est rarement utilisée dans un script, mais elle est très utile au moment du développement pour
parcourir les objets intégrés.
Par exemple, l'objet document est plus ou moins différent selon le navigateur : l'objet document
de Netscape Navigator a des propriétés et méthode que l'objet document de Microsoft Internet Explorer n'a
pas et vice-versa.
On peut alors parcourir cette objet et afficher toutes ces propriétés à l'aide de la boucle for...in.
La boucle for...in s'utilise ainsi :

for(variable in objet){
[Instructions]
}

Ainsi, pour parcourir l'objet document, on écrira :

for(var Maprop in document){
document.write(Maprop + '<br>');
}

La boucle for...in n'a pas de condition. Elle s'arrête lorsque toutes les propriétés ont été parcourues.
Il est egalement possible de savoir la valeur d'une propriété en utilisant l'objet examiné comme sorte de tableau
associatif (nous les étudierons par la suite) :

for(var Maprop in document){
document.write(Maprop + ' = ' + document[Maprop] + '<br>');
}

break et continue

continue permet d'ignorer les instructions placées entre lui et la fin de la boucle. La boucle reprend alors
son chemin sans les avoir executées.
Reprenons nos tables de multiplication. Si on avait voulu afficher tout les produits, sauf celui du chiffre 5,
ont aurait pu écrire :

document.writeln("<pre>");
document.writeln("Apprenons la table de 8");
for(var i=0; i < 10; i++){
if(i==5)continue;// on repart au début de la boucle
// si i == 5
document.writeln(i + " fois 8 = " + i * 8);
}
document.writeln("</pre>");

break à la même utilisation que dans les cas. Il permet de sortir de la structure. Si on avait voulu
afficher tout les produits jusqu'à 5, on aurait pu écrire :

document.writeln("<pre>");
document.writeln("Apprenons la table de 8");
for(var i=0; i < 10; i++){
if(i==5)break;// on sort de la boucle
// si i == 5
document.writeln(i + " fois 8 = " + i * 8);
}
document.writeln("</pre>");

C'est deux instructions peuvent recevoir le nom d'un label.
Un label est défini comme suit :

indentificateur :

Un label peut se trouver n'importe où dans le code.
L'utilisation d'un nom de label avec break et continue peut être utile lors de l'imbrication
de boucles.
L'exemple suivant calcul toutes les tables de multiplication :

document.writeln("<pre>");
for(var j=0; j < 10; j++){
for(var i=0; i < 10; i++){
document.writeln(i + " fois " + j + " = " + i * j);
}
document.writeln();
}
document.writeln("</pre>");

Nous allons maintenant affecter un label à chacune de ces boucles :

document.writeln("<pre>");
boucleun :// premier label
for(var j=0; j < 10; j++){
boucledeux :// deuxième label
for(var i=0; i < 10; i++){
document.writeln(i + " fois " + j + " = " + i * j);
}
document.writeln();
}
document.writeln("</pre>");

Ainsi, si lorsque i est égal à 5, on veut sortir des deux boucles, on pourra écrire :

document.writeln("<pre>");
boucleun :
for(var j=0; j < 10; j++){
boucledeux :
for(var i=0; i < 10; i++){
if(i==5)break boucleun;// on sort de la première boucle
document.writeln(i + " fois " + j + " = " + i * j);
}
document.writeln();
}
document.writeln("</pre>");

Si nous n'avions pas préciser de label, seul la 2ème boucle aurait été stopée.
Cette remarque est également valable pour continue. Si on ne veut retourner à la première boucle
lorsque i est égale à 5, on écrira :

document.writeln("<pre>");
boucleun :
for(var j=0; j < 10; j++){
boucledeux :
for(var i=0; i < 10; i++){
if(i==5)continue boucleun;// retour à la première boucle
document.writeln(i + " fois " + j + " = " + i * j);
}
document.writeln();
}
document.writeln("</pre>");
Categories: JavaScript Tags: