Alain Barraud Mémento informatique  
 
Accueil Logithèque - SE Photo - vidéo Internet - protocoles Site Web PC - Réseau Archives
Page ouverte le 10/05/2009

JavaScript


Sommaire
Tuto retranscrit de http://www.siteduzero.com/tutoriel-3-8158-tout-sur-le-javascript.html
Mes notes
1. Sites à consulter
2. Présentation
2.1 Premiers pas en JavaScript
2.2 Où placer le code JavaScript ?
2.2.1 Directement dans les balises
2.2.2 Entre les balises <script> et </script>
2.2.3 Placer le code dans un fichier séparé
2.3 De quoi se compose le "code" ?
3. Les variables
3.2 Les chaînes de caractères
3.3 Les nombres
4. Créer une fonction
4.2 Les arguments
4.3 Portée d'une variable
4.4 Valeur renvoyée
4.5 L'indentation
5. Les conditions
5.1 Les booléens
5.2 Opérateurs et conditions
5.3 Des conditions plus élaborées
5.4 La négation
5.5 IF et ELSE
5.6 La fonction isNaN
5.7 Distinguer plusieurs cas avec SWITCH
6. Les boucles
6.1 Des boucles ? Pour quoi faire ?
6.2 Boucle "while"
6.3 Boucle "for"
6.4 Boucle "do … while"
6.5 Instructions de contrôle
6.6 Application
7. TD : jeu du "Plus ou moins"
7.1 Les consignes
7.2 Correction
7.3 Amélioration 1 : jouer plusieurs fois de suite
7.4 Amélioration 2 : quelques finitions
7.5 Code final
8. Les tableaux
9. Retour sur les fonctions
9.1 Fonctions et variables
9.2 Les arguments facultatifs : nombre fixé d'arguments
9.3 Les arguments facultatifs : nombre illimité d'arguments
x. Synthèse

Partie 2 : JavaScript et la POO…

1. La POO
1.1 Qu'est-ce qu'un objet ?
1.2 Comment ça s'utilise ?
1.3 Récapitulatif du vocabulaire
2. Les objets HTML
2.1 Au sommet de la hiérarchie…
2.2 Les objets du document
2.3 Un traitement de faveur pour les formulaires
2.4 Complément : le mot-clé "this"
3. Les formulaires
3.1 L'objet "form"
3.2 Les éléments, de A à Z !
3.3 Les éléments et leur fonctionnement
4. TD : vérification d'un formulaire
4.1 Briefing
4.2 Le pseudo
4.3 L'adresse e-mail
4.4 L'âge
4.5 Tout vérifier avant l'envoi

Partie 3 : Visite guidée des objets JS

JS met à notre disposition plusieurs objets, tels que les tableaux (Array), les chaînes de caractères (String), etc.
Cette partie les présente, montre leurs principales méthodes, et illustre leur fonctionnement par des exemples.
alt Bien que suffisamment complets, ces chapitres fournissent une liste non exhaustive des attributs / méthodes des objets abordés.
1. L'objet "Array"
1.1 Sommaire
1.2 Les classiques
1.3 Moins classiques
1.4 Les piles et les files
2. L'objet "Math"
2.1 Sommaire
2.2 Fonction basiques
2.3 Arrondir
2.4 Trigonométrie
2.5 Autres fonctions usuelles
2.6 Inclassables
2.7 Fonctions indépendantes de l'objet "Math"
2.8 Nos propres fonctions
3. L'objet "Date"
3.1 Sommaire
3.2 Méthodes diverses
3.3 Récupérer et modifier l'heure
4. L'objet "String"
4.1 Sommaire
4.2 Opérations sur les caractères
4.3 Opérations sur les chaînes
4.4 Rechercher et remplacer
5. L'objet "RegExp"
5.1 Sommaire
5.2 Créer une regex
5.3 Quelques exemples
5.4 Utiliser une regex
6. L'objet "Image"
6.1 Sommaire
6.2 Evénements
6.3 Attributs
6.4 Exemples d'utilisation
7. Le CSS via JS
7.1 Sommaire
7.2 Exemples d'utilisation
7.3 Afficher / masquer un élément
7.4 Plusieurs classes pour un même élément
7.5 Notre fonction "getElementsByClassName"

Au fur et à mesure des pages, les codes JS seront testés "dans la page". Pour chaque code concerné, on trouvera ceci :

Test nº x
Quelques mots …

En plus, pour chaque test nº x :
- un autre test avec même nº x sur page html avec code script dans <head> autant que possible. Voir : appli.html
- un autre test avec même nº x sur page html avec code script dans fichier .js. Voir : appli_al.html


Sites à consulter

- http://www.commentcamarche.net/contents/javascript/jsintro.php3
- http://www.toutjavascript.com/savoir/savoir04.php3
- http://www.lecodejava.com/
- http://fr.hscripts.com/tutoriels/javascript/index.php
- http://www.flesko.com/annuaire/informatique/programmation/java-javascript.php
- http://www.siteduzero.com/tutoriel-2-70-javascript.html
- http://www.siteduzero.com/tutoriel-3-7930-presentation.html#ss_part_1
- http://fr.wikipedia.org/wiki/Javascript
- http://www.editeurjavascript.com/cours/
- http://javascript.developpez.com/cours/
- http://www.xul.fr/ecmascript/tutoriel/
- http://fr.selfhtml.org/javascript/intro.htm
- http://www.wikituto.org/index.php/Javascript:Fichiers_externes
-

CSS en JS
- http://batraciens.net/css-astuces/menu-css.htm
- http://www.css4design.com/blog/le-code-css-et-javascript-inline-saimal
- http://www.alsacreations.com/tuto/lire/562-bonnes-pratiques-javascript.html
- http://www.snoupix.com/encyclopedie_html-css.html dont menu déroulant en css sans js ici
- http://www.lehtml.com/js/even.htm
- http://membres.lycos.fr/ici/modemploi/javascript/cours-js/c-js1.htm
- http://fr.wikiversity.org/wiki/JavaScript/Premiers_pas

Bases
- http://www.creation-du-web.com/honolulu/cours-html-javascript-java5.html
- http://www.toutenligne.com/index.php?contenu=js_notion&menu=js
- http://forum.alsacreations.com/topic-5-20818-1.html
afficher date
- http://www.webelix.net/trucs_et_astuces-(JavaScript)_Afficher_date.html
- http://www.supportduweb.com/scripts_tutoriaux-code-source-9-faire-un-calendrier-en-javascript-avec-un-effet-de-transparence.html
- http://ireswww.in2p3.fr/ires/cours/cours.html
Cours JS
- http://pagesperso-orange.fr/philippe.medan/jvs/jsaccueil.htm#debut
- http://www.ac-creteil.fr/util/programmation/javascript/
- http://www.startjeux.com/
- http://www.scriptzone-fr.com/cours/javascript/cour0.htm
- http://www-ipst.u-strasbg.fr/pat/program/javascript/
- http://forum.alsacreations.com/topic.php?fid=5&tid=20818
-
JS par l'exemple
- http://developpementweb.online.fr/dev/JS/exemples.htm
- http://www.thelin.net/laurent/labo/js/
- http://www.jejavascript.net/rollov_3bis.php
fichier.pdf
- js_1.pdf
A revoir
- http://www.webinventif.fr/barre-de-navigation-fixe-depliable-et-transparente/


Présentation

Le JavaScript est un langage de programmation (il est apparu en 1995).
C'est un langage orienté objet : quand on code en JavaScript, on se base sur des objets.
Sa principale utilisation est à l'intérieur des pages web. JavaScript est une extension du (x)HTML. Il permet de les rendre interactives.
Facile à mettre en œuvre, il suffit d'un navigateur et d'un éditeur de texte comme le Bloc-notes.
Possible même de faire de petites "applications" en DHTML (Dynamic HyperText Markup Langage). Ce sont des pages dont le contenu est modifié sans avoir à recharger la page.

En résumé :

- C'est un script
- Langage orienté objet
- Le code n'est pas compilé contrairement à Java avec lequel il est souvent amalgamé par erreur.
Donc il est rapide à produire, moins puissant et relativement limité (se limite plus ou moins à la page web et ne permet pas de manipuler des fichiers.
- Il est executé par le navigateur du visiteur (le client) et dépend donc de lui.
- Il est déterminé par une norme, nommée ECMA-262 ou ECMAScript.


Un script est, par opposition à un langage compilé, un langage qui s'interprète. L'interprète du JavaScript étant le navigateur du visiteur (le client).
L'intérêt des scripts est sans doute leur manière d'être utilisés : ils ne sont pas obligatoirement exécutés au chargement de la page. Ils sont lancés lorsqu'un événement spécifique se produit.

Fonctionnement

  1. L' ordinateur récupère le code source de la page demandée.
  2. Le navigateur interprète la page et les scripts qu'elle contient.
  3. La page formatée s'affiche sur l'écran. Les scripts, sont mis en mémoire et seront lancés dès que l'événement attendu se produira.
Comme c'est le navigateur qui exécute le script auquel il a acc&eagrave;s, on peut également y avoir acc&eagrave;s via la source de la page.
Si les scripts d'une page ne nous plaisent aps, il suffit de désactiver le JavaScript via les options du navigateur.

JavaSript n'est pas Java
- Le JavaScript est placé dans le code (x)HTML et fait partie intégrante du code source. Le navigateur lit et interprète ce code source, et exécute les scripts (ou les garde en mémoire pour les lancer plus tard, lorsqu'un événement particulier se produit).
- Le Java, quant à lui, est compilé pour former un programme.

Leur seul point commun, c'est d'être des langages orientés objet (comme le C++).


Premiers pas en JavaScript

Commentaires

Rappel, commentaires en (x)HTML : <!--je suis un commentaire-->

En JS, il y a 2 manières d'écrire un commentaire :

  • Les commentaires sur une seule ligne : se placent sur la fin de la ligne, après // (deux slashs).
    Eviter d'écrire trop de choses de cette manière (généralement, on prend 80 caractères maximum par ligne, code compris, mais ce n'est pas une obligation).
  • Les commentaires sur plusieurs lignes : comme en CSS, ils se placent entre /* et */. Dans ce cas, aucune limitation en longueur de commentaire.
    Souvent, on n'utilise que cette notation (que les commentaires soient courts ou longs).
Exemple :
Code : JavaScript
1     duCode; // commentaire court
2     codeBis;/* autre commentaire court */
3     suiteDuCode;
4     encoreDuCode; /* ici, je vais mettre un commentaire long
5 je peux écrire autant que je veux,
6 sur plusieurs lignes si j'ai envie */

Afficher une boîte de dialogue

C'est une petite fenêtre (une boîte) qui sert à communiquer (dialoguer) avec l'utilisateur (lui afficher ou lui demander quelque chose).

Exemple :

Ex. JS
La boîte de dialogue

Code : JavaScript
1     alert ( ' Hello world ' ) ;

C'est du code JavaScript. Noter les apostrophes de part et d'autre du message qui doit lui-même ne pas en contenir.


Où placer le code JavaScript ?

Insérer du JavaScript dans une page xHTML

Rappel de la structure d'une page xHTML (code minimal).

 Code : HTML
1     <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
2     <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr">
3     <head>
4         <title>Titre de la page</title>
5         <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
6         <!-- en-tete du document -->
7     </head>
8     <body>
9         <!-- corps du document -->
10     </body>
11     </html>

1/ Directement dans les balises

La première méthode consiste à écrire le code directement à l'intérieur de la balise qui va être concernée par le script.
Pour insérer le code dans une balise, une nouvelle propriété est nécessaire. Il s'agit du gestionnaire d'événements (en anglais : event handler).

  • Cette propriété est caractéristique du JS : elle suffit à dire au navigateur qu'il s'agit de JS.
  • Elle porte le nom de l'événement qui doit déclencher le script (c'est pour cela qu'on parle de "gestionnaire d'événements").
  • Elle contient comme valeur le script à exécuter lors de cet événement.
La balise en question (balise seule ou fonctionnant par paire) aura la forme :
Code : HTML
<nom eventHandler="script" />

Examinons un exemple.

  • Avec un lien pour lequel on mettra # en guise d'adresse.
    Code : HTML
    <a href="#">lien</a>
  • L'événement déclenchant le script sera un clic de souris sur ce lien.
    Le nom de cet événement est : onclick.
  • Le script à exécuter sera l'ouverture d'une boîte de dialogue. Le code sera donc :
    Code : JavaScript
    alert(´Bonjour !´); // (commentaire éventuel)

Celà donne :

Code : HTML
<a href="#" onclick="alert('Bonjour !');">lien</a>

Cliquer sur ce lien pour voir.
alt onclick doit être en minuscule ! Ceci est valable pour tous les gestionnaires d'événements.
S'il y a une majuscule, la page est invalide !

Autre exemple d'un message en cliquant sur une image : orchidée

Cas d'un lien :
Il est possible d'écrire du JavaScript directement à la place de l'adresse d'un lien, en le faisant précéder de javascript:

Code : HTML
<a href="javascript:alert('Coucou');"> Cliquer ici </a>
Cette méthode a l'avantage de ne pas faire remonter le visiteur en haut de la page, comme l'aurait fait un lien portant le #. Ciquer ici

Autres gestionnaires d'événements

La syntaxe est la même. Les événements s'appliquent à la plupart des balises (sauf cas particuliers, relatifs à des balises précises).

En voici quelques uns :
  • onclick : au clic (gauche) de la souris
  • ondblclick : lors d'un double clic
  • onmouseover : au passage de la souris
  • onmouseout : lorsque la souris "sort" de cet élément (en quelque sorte, le contraire de onmouseover).

Gestionnaires d'événements de la balise <body>

  • onload: au chargement de la page
  • onunload : lorsqu'on quitte la page (ou qu'on change de page).

2/ Entre les balises <script> et </script>

Si le script est très long, on ne va pas le mettre dans le gestionnaire d'événements.
La seconde solution consiste à écrire le script entre deux balises spécifiques, <script> et </script>.

Il faut commencer par préciser au navigateur que notre script est du JavaScript.
Pour cela, on rajoute la propriété type="text/javascript", ce qui donne :

Code : HTML
1     <script type="text/javascript">
2
3         /* le code javascript se trouve ici
4         ce qui est plus pratique pour un code de plusieurs lignes
*/
5
6     </script>
alt Attention : un vieux navigateur peut ne pas connaître le JS. Il va l'ignorer, mais tout le code sera considéré comme du texte et, il va être affiché sur la page.
Il existe une solution.

Pour faire ignorer ce texte à ce type de navigateur, on lui fait croire qu'il s'agit d'un commentaire en (x)HTML.
Un navigateur qui connaît le JavaScript, saura qu'il n'a plus affaire à du (x)HTML, et passera donc la balise du commentaire (<!--) sans en tenir compte.
Cependant, pour éviter qu'il soit déboussolé en rencontrant la balise de fin de commentaire (-->), on va lui dire, en JS, qu'il s'agit d'un commentaire, grâce à //.
Ce qui donne :

Code : HTML
1     <script type="text/javascript">
2     <!--
3
4         /* le code javascript se trouve ici
5         et ce sans être inquiété par les vieux navigateurs
*/
6
7     //-->
8     </script>

Dans l'en-tête ou dans le corps de la page (x)HTML

On peut mettre ces balises soit dans l'en-tête (<head> ... </head>), soit dans le corps (<body> ... </body>) de la page (x)HTML :

  • dans le corps de la page, sont à placer les scripts à exécuter au chargement de cette dernière (lorsque le navigateur "lira" le code, il l'exécutera en même temps).
  • en revanche, sont à placer dans l'en-tête les éléments qui doivent être exécutés plus tard (lors d'un événement particulier, par exemple).
    Dans ce cas, le code n'est pas écrit "en vrac", nous verrons plus loin comment l'organiser.
alt si on met un script pour indiquer la fin du chargement de celle-ci (donc, à la fin du corps), tant que la boîte de dialogue est ouverte, la page ne se charge pas.
Le navigateur exécute le JS au fur et à mesure du chargement de la page et attend donc que le script soit terminé avant de charger la suite.
Annotation : ce serait le contraire.
- Mettre dans <head> les données comme les variables.
- Par contre, toutes les fonctions dans <head> doivent être exécutées pour que la page puisse s'afficher., contrairement à celles dans <body>.

3/ Placer le code dans un fichier séparé

Importer un fichier externe
Comme pour le CSS, on peut placer le code dans un fichier indépendant. On dit que le code est importé depuis un fichier externe. Ce fichier aura comme extension : .js.
On indique aux balises le nom et l'emplacement du fichier contenant le ou les scripts grâce à la propriété src.

alt Comme il n'y a plus de code entre les balises, la technique pour masquer le code aux anciens navigateurs n'a plus lieu d'être.

Cela donne quelque chose comme :

Code : HTML
    <script type="text/javascript" src="script.js"></script>

Comme il n'y a rien entre les balises <script> et </script>, on peut faire de ces balises jumelles une seule et même balise qui sera <script/>.

Voici donc comment importer le fichier "script.js" :

Code : HTML
    <script type="text/javascript" src="script.js" />

Créer le fichier
Avec un éditeur de texte.


De quoi se compose le "code" ?

Des instructions

Une instruction est un "ordre" que l'on donne à l'ordinateur.
alert('Hello word'); par exemple, est donc une instruction. On ordonne au script de créer une boîte de dialogue.

Une grande partie de ce qu'on écrit en JS sont des instructions, mais pas tout.

Séparer des instructions
Quand on donne une instruction à l'ordinateur, il faut également lui dire où est la fin de cette instruction…
Pour cela, en JS, il y a deux solutions :

  • revenir à la ligne (avec la touche Entrée ou Enter) : l'ordinateur comprendra qu'il aura ensuite affaire à une autre instruction.
  • utiliser un point-virgule(;) à la fin de l'instruction.
    Il est bien sûr parfaitement possible d'utiliser un point-virgule et un (ou plusieurs) retour(s) à la ligne…
alt Il est recommandé d'utiliser le point-virgule, car dans de nombreux langages de programmation, il est obligatoire à la fin d'une instruction (de ce fait, le JS est une exception).

Les fonctions

Une fonction est une suite d'instructions ayant un rôle précis.
Reprenons l'exemple précédent :

Code : JavaScript
1     alert ( ' Hello world ' ) ;

Cette fonction affiche, lorsqu'on l'appelle (terme à retenir), une boîte de dialogue contenant le texte entre les apostrophes (ici : 'Hello world').
En JS, on a parmi beaucoup d'autres, la fonction alert( ).

Rôle des parenthèses
Ce qui est entre parenthèses est ce que pourrait appeler l'argument. L'argument est le texte à afficher. S'il y a plusieurs arguments, ils sont séparés par des virgules.
On doit obligatoirement mettre les parenthèses, même s'il n'y a aucun argument (elles seront alors vides).

alt Normalement, le nom de la fonction est alert.
Employer le nom alert( ) est un abus de langage, mais cela permet de repérer facilement qu'on parle d'une fonction.

De nouvelles fonctions
Il existe des fonctions déjà définies (terme à retenir) en JS, qu'on va donc pouvoir utiliser directement, comme notre fonction alert( ). Le navigateur va alors chercher la définition de cette fonction et l'exécuter, ce qui aura pour effet de faire apparaître le message.

Mais il est également possible de créer ses propres fonctions (voir plus loin).