Apprentissage du JavaScript

Généralités Afficher

Insérer du JavaScript

Le JavaScript s'insère à l'aide de la balise <script>.

Exemple :

<script type="text/JavaScript"></script>

Faire référence à une balise du html

Pour pouvoir faire référence à une balise html, il faut définir l'identité de cette balise.

Exemples :

<div id="maZone"></div>

<button id="btn1">Cliquer</button>

La référence à cette balise se fait de la façon suivante :

document.querySelector('#maZone')

document.querySelector('#btn1')

Modifier les styles d'une balise Afficher

Exemples

document.querySelector('#maZone').style.color="red";

document.querySelector('#maZone').style.color="rgb(255,0,0)";

document.querySelector('#maPage').style.backgroundColor="rgb(255,0,0)";

document.querySelector('#monParag').style.fontSize="16px";

Généralités

Les styles en javascript s'écrivent sans le - et avec des majuscules pour séparer les mots.

Les valeurs que l'on attribue aux styles sont toujours des chaines de caractères entre " ".

Gérer les événements associés à une balise (addEventListener) Afficher

Les événements

Chaque action de l'utilisateur, génère des événements lors desquels les différents programmes éxécutent des actions.

Ainsi, pour le navigateur, un click sur un élément particulier de la page, le déplacement de la souris, la fermeture de la page... sont autant d'événements qu'il est possible de reprogrammer.

Voici quelques exemples d'événements associés aux éléments d'une page HTML : click, mouseover, mouseout, keypress...

Exepmle : chagement de la couleur de la page lors du clic sur un bouton

Dans le html :

<body id="page">

   <button id="btn">Cliquer</button>

</body>

Dans la balise <script> :

document.querySelector('#btn').addEventListener('click', function() {

   document.querySelector('#page').style.backgroundColor = 'red';

});

Défi n°

Créer une page avec 3 boutons qui permettent de choisir la couleur de fond de la page parmi 3 couleurs.

Défi n°

Créer une page avec une zone retangulaire qui change de couleur quand on la survole.

Changer le texte d'une balise (innerHTML) Afficher

Généralité

Le contenu d'une balise peut être modifié à l'aide de la propriété innerHTML de cette balise. Attention : le nouveau contenu remplace le précédent.

Exemple :

document.querySelector('#baliseAffichage').innerHTML = "Bravo !";

Remarque

Le contenu que l'on affecte à la balise peut être du langage HTML.

Exemple :

document.querySelector('#baliseAffichage').innerHTML = "Bravo ! <em>Bravo !</em>";

Défi n°

Créer une page avec 2 boutons qui permettent d'afficher du texte différent dans une balise.

Utiliser des variables simples Afficher

Les variables sont des espaces de la mémoire auxquels on donne un nom pour pouvoir y stocker de l'information et la réutiliser.

Exemple de code pour déclarer une variable :

var maVariable;

Exemple de code pour donner une valeur à une variable :

maVariable = 8;

Défi n°

Créer un "Compteur de clic", c'est à dire une page avec 1 bouton et une zone d'affichage dont la valeur augmante de 1 à chaque clic. Ajouter ensuite un deuxième bouton de remise à zero.

Utiliser les chaines de caractères Afficher

Généralités

Les chaines de caractères sont des ensembles de caractères. En programmation elles s'écrivent entre guillemet "" ou ''

Concaténation de chaines

Le signe + utilisé entre deux chaines colle les chaines

Exemples simples :

"abc" + "def" //Renvoie "abcdef"

45 + "px" //Renvoie "45px"

45 + 8 + "px" //Renvoie "53px"

Exemples avec des variables :

maVariable = 8;

maChaine = maVariable + "px" //maChaine vaut "8px"

prenom = "Jean";

parole = "Je m'appelle " + prenom + ". Et vous ?" //parole vaut "Je m'appelle Jean. Et vous ?"

Transformer les chaines en nombre

Pour pouvoir faire des calculs avec des chaines, il faut les transformer en nombre. Pour cela, on utilise parseInt() ou parseFloat()

maChaine = "8.5ab";

monEntier = parseInt(maChaine) //monEntier vaut 8

monNombre = parseFloat(maChaine) //monNombre vaut 8,5

Défi n°

Créer une page avec du texte et 2 boutons qui permettent d'augmenter et diminuer la taille de la police.

Générer et utiliser des nombres aléatoires (Math.random()) Afficher

Généralités

L'objet Math propose de nombreuses méthodes et propriétés souvent utiles en programmation.

Celles qui vont nous intéresser ici sont :

Math.random() //Retourne un nombre décimal entre 0 (inclus) et 1 (exclu)

Math.floor(nombre) //Retourne l'arrondi par défaut de nombre

Math.ceil(nombre) //Retourne l'arrondi par excès de nombre

Générer un nombre entier aléatoire

Code pour un nombre entier aléatoire entre 0 et 9

Math.floor(Math.random()*10)

Code pour un nombre entier aléatoire entre 1 et 10

Math.ceil(Math.random()*10)

Défi n°

Créer une page avec un bouton qui permet de simuler le lancement de deux dés.

Défi n°

Créer une page avec 1 bouton qui permet de changer aléatoirement la couleur du fond de la page et d'afficher les valeurs des composantes RVB de cette couleur.

Programmer une instruction conditionnalle (if) Afficher

Syntaxe générale

if ( //test ) {

   //Instructions si test est vrai

} else {

   //Instructions si test est vrai

}

Opérateurs de comparaison

Les principaux opérateurs de comparaison sont :

=== pour vérifier une égalité stricte,

== pour vérifier une égalité,

!= pour vérifier une différence,

<, >, <=, >=.

Défi n°

Créer une page avec un bouton qui permet de basculer l'affichage de "texte blanc sur fond noir" à "texte noir sur fond blanc" et inversement.

Défi n°

Créer une page permettant de jouer à ChiFouMi contre l'ordinateur.

Afficher/Masquer et Bloquer/Débloquer (style.display, style.visibility et disabled) Afficher

Code pour afficher/masquer une balise en gardant l'espace qu'elle occupait (sans modifier l'agencement de la page) :

document.querySelector('#maBalise').style.visibility = "hidden" //pour masquer

document.querySelector('#maBalise').style.visibility = "visible"; //pour afficher

Code pour afficher/masquer une balise sans garder l'espace qu'elle occupait :

document.querySelector('#maBalise').style.display = "none"; //pour masquer

document.querySelector('#maBalise').style.display = "block"; //pour afficher une balise de type block

document.querySelector('#maBalise').style.display="inline"; //pour afficher une balise de type texte

Code pour bloquer/débloquer un bouton ou un input

Remarque : le blocage ne se fait pas à l'aide des styles, mais avec la propriété disabled des balises button et input.

document.querySelector('#monBouton').disabled=true; //pour bloquer

document.querySelector('#monBouton').disabled=false; //pour débloquer

Défi n°

Créer une page avec des zones de couleurs et des boutons de façon à mettre en évidence la différence entre "style.display" et "style.visibility".

Défi n°

Créer une page avec 1 bouton qui se bloque au bout de 3 clics. Ajouter ensuite un deuxième bouton de déblocage.

Utiliser des zones de saisie (balise <input />) Afficher

Généralités

La saisie d'une information par l'utilisateur se fait à l'aide de la balise <input type="text" />

<input id="zoneDeSaisie" type="text" value="Texte initial" />

Pour récupérer l'information saisie par l'utilisateur dans le javascript il faut utiliser la propriété value de la balise <input type="text" />.

var saisie;

saisie = document.querySelector('#zoneDeSaisie').value

Transformer une chaine en nombre

La propriété value d'une balise <input> est toujours une chaine de caractère. Pour pouvoir faire des calculs, il faut la transformer en nombre. Pour cela, on utilise parseInt() ou parseFloat().

monEntier = parseInt(document.querySelector('#zoneDeSaisie').value)

monNombre = parseFloat(document.querySelector('#zoneDeSaisie').value)

Bloquer une zone de saisie

Le blocage d'une zone de saisie se fait à l'aide de la propriété disabled de la balise <input />

document.querySelector('#zoneDeSaisie').disabled = true; //pour bloquer

document.querySelector('#zoneDeSaisie').disabled = false; //pour débloquer

Défi n°

Changer la couleur de fond de la page à partir de trois informations saisies par l'utilisateur : le niveaux du rouge, le niveau du vert et le niveau du bleu.

Défi n°

Créer un petit jeu où l'ordinateur choisi un nombre au hasard et l'utilisateur doit le deviner avec uniquement les indications "trop grand" ou "trop petit" fournies par l'ordinateur.