JavaScript

Le langage JavaScript

Présentation du langage de script JavaScript

JavaScript a été créé en 1995 par Brendan Eich. Brendan Eich est aussi co-fondateur de Mozilla. JavaScript est inspiré notamment de Java mais ce sont deux langages très différents qu'il ne faut pas confondre. ECMAScript est la norme de JavaScript. La 11e édition de JavaScript est sortie en juin 2020.

JavaScript est un langage de script de taut niveau, multi-plateforme, interprété, dynamique et léger. Il a un typage dynamique faible. Il est sensible à la casse et utilise les caractères Unicode.

JavaScript est le langage de script pour les applications et les pages web et est interprété directement par le navigateur web. En Front-End, il permet de créer des interfaces web dynamiques et intéractives en utilisant par exemple la librairie jQuery. Côté serveur, la plateforme Node.js peut-être utilisée.

Commencer

Prérequis avant de commencer

Environnement

Windows 10 et le navigateur

Nous pouvons utiliser la console intéractive (touche F12) du navigateur Chrome pour tester du code simple.

Ma première commande

Hello world

La méthode console.log

Elle permet d'afficher un message dans la console Web.
👍 Une bonne pratique est d'ajouter un point-virgule après chaque instruction.

  • 						
    > console.log("Hello world!");
    Hello world!
    

La méthode windows.alert

Elle permet d'afficher une boite de dialogue dans le navigateur.

  • 						
    > window.alert("Hello world!");
    
  • 						
    Hello world!
     OK 
    

Les commentaires

Il y a deux moyens pour rajouter des commentaires.

Une ligne de commentaires

Avec les doubles slash

  • 
    >  // Une ligne de commentaire
    

Plusieurs lignes de commentaires

Avec slash étoile

  • 
    > /* Plusieurs lignes 
      de commentaires */
    

Les variables

Une variable est un conteneur pour stocker une valeur.

Dans ce chapitre, nous allons voir les déclarations de variables, les différents types et comment les utiliser.

Déclaration

La déclaration permet de nommer une variable.

Pour déclarer une variable on utilise le mot clé var, let ou const.
L'initialisation est l'action d'assigner une valeur pour la première fois à une variable.
Il est possible de déclarer et d'initialiser une variable en même temps.

L'instruction var

Elle permet de déclarer une variable et éventuellement d'initialiser sa valeur.

  • 						
    > var age = 44;
    > console.log(age);
    44
    

L'instruction let

C'est un autre moyen de déclarer une variable et d'initialiser sa valeur.
Sa portée est limitée au bloc courant.
Un bloc est délimité par une paire d'accolades.

  • 						
    > let age = 44;
    > console.log(age);
    44
    

L'instruction const

Elle permet de créer une constante.
Il n'est pas possible de lui affecter ensuite une nouvelle valeur, ie que sa valeur ne peut pas être modifiée.

  • 						
    > const pi = 3.14;
    > console.log(pi);
    44
    

Les types de variables

Python est un langage avec un typage dynamique fort.

Le type est automatiquement déterminé lors de l'initialisation.
Il peut aussi changer lors de l'affectation d'une nouvelle valeur.

Le tableau suivant présentes les différents types de variables.

TypeDétail
numbernombres réels
BigIntgrands entiers
stringchaîne de caractères
booleanbooléen true ou false
nullvaleur null
undefinedsans valeur
symbol valeur symbole
objectdictionnaire et tableau

L'opérateur typeof

Il permet de connaitre le type d'une variable.

  • 						
    > let age = 44;
    > console.log(typeof(age));
    number
    

Les nombres

Les nombres sont de type number.

Les nombres peuvent êtres positifs ou négatifs, des entiers ou des réels.
Voici un exemple de déclaration.

  • 						
    > let note = 18;
    

Opérations arythmétiques

Voyons les différentes opérations possibles.

L'addition

  • 						
    > 2+3;
    5
    

La soustraction

  • 						
    > 5-2;
    3
    

La multiplication

  • 						
    > 2*3;
    6
    

La division

  • 						
    > 6/2;
    3
    

Le reste

  • 						
    > 5%2;
    1
    

Les puissances

  • 						
    > 3**2;
    9
    

Le texte

Le texte est de type string.

Une chaîne de caractères s'écrit entre apostrophes (simple quotes) ' ' ou entre guillements (double quotes) " ".
Voici un exemple de déclaration.

  • 						
    > let nom = 'toto';
    > console.log(nom);
    toto
    

La concaténation

Le signe + permet de contacténer plusieurs chaines de caractères.

  • 						
    > let mon_texte = "Hello " + nom + "!";
    > console.log(mon_texte);
    Hello toto!
    

Longueur d'une chaine

La propriété length permet d'obtenir la longueur d'une chaine.

  • 						
    > console.log(mon_texte.length);
    11
    

Accéder à un caractère de la chaine

Les crochets permettent d'accéder au rang n de la chaine.
⚠️ La premier caractère est est de rang 0.

  • 						
    > console.log(mon_texte.[1]);
    e
    

La méthode indexOf

La méthode indexOf permet de vérifier si une sous-chaine est présente dans une chaine.
Elle renvoie la position de la sous-chaine dans la chaine.
La valeur -1 est retournée si la sous-chaine n'est pas présente.

  • 						
    > console.log(mon_texte.indexOf("toto"));
    6
    > console.log(mon_texte.indexOf("titi"));
    -1
    

La méthode replace

La méthode replace permet de remplacer une sous-chaine par une autre.

  • 						
    > mon_texte = mon_texte.replace("toto", "titi");
    > console.log(mon_texte);
    Hello titi!
    

Les booléens

Un booléen peut prendre la valeur true ou false.

Une chaîne de caractères est entre apostrophes (simple quotes) ' ' ou entre guillements (double quotes) " ".
Voici un exemple de déclaration.

  • 						
    > let choix = true;
    > console.log(choix);
    true
    

Les objets

Un objet est de type object.

Un objet possède un ensemble de propriétés définisant ses caractéristiques.
En fait, une propriété a un nom, la clé et une valeur.
Un objet javascript est similaire à un dictionnaire en python.
L'ensembles des propriétés est entre accolades {}.
Voici un exemple de déclaration.

  • 						
    > let ma_voiture = {marque: "renault", couleur: "bleu", année:"2010", moteur:"essence"};
    

Les propriétés

Ajout, modification, accès

Pour accéder à une propriété, on écrit mon_objet.sa_propriété.
Pour ajouter ou modifier une propriété, on écrit mon_objet.sa_propriété = nouvelle_valeur.

  • 
    > ma_voiture.nom = "Megane";			
    > console.log(ma_voiture.nom);
    'Megane'
    > ma_voiture.nom = "Laguna";
    > console.log(ma_voiture.nom);
    Laguna
    

Les tableaux

Un tableau est un objet de haut-niveau.

Il permet de stocker des éléments de façon ordonnée.
L'ensemble des éléments est entre crochets [].
Un tableau javascript est similaire à une liste en python.
Voici un exemple de déclaration.

  • 						
    > let mes_animes_préférés = ["One Piece", "One Punch Man", "Hunter x Hunter", "Naruto"];
    

Eléments du tableau

Accès, ajout, modification

L'index d'un élément est sa position, l'index 0 désignant le premier élément le plus à gauche.
Pour accéder à un élément du tableau, on écrit mon_tableau[index].
Pour modifier la valeur d'un élément ou en ajouter, on écrit mon_tableau[index] = nouvelle_valeur.

  • 			
    > console.log(mes_animes_préférés[1]);
    One Punch Man
    > mes_animes_préférés[4] = "Slam Dunk"
    > console.log(mes_animes_préférés);
    (5) ['One Piece', 'One Punch Man', 'Hunter x Hunter', 'Naruto', 'Slam Dunk']
    

La méthode push

La méthode push permet d'ajouter un élément à la fin du tableau.

  • 			
    > mes_animes_préférés.push("Ippo");
    5
    > console.log(mes_animes_préférés);
    (6) ['One Piece', 'One Punch Man', 'Hunter x Hunter', 'Naruto', 'Slam Dunk', "Ippo"]
    

La méthode pop

La méthode pop permet de supprimer le dernier élément.

  • 			
    > mes_animes_préférés.pop();
    'Ippo'
    > console.log(mes_animes_préférés);
    (5) ['One Piece', 'One Punch Man', 'Hunter x Hunter', 'Naruto', 'Slam Dunk']
    

Nombre d'éléments d'un tableau

La propriété length permet d'obtenir le nombre d'éléments d'un tableau.

  • 						
    > console.log(mes_animes_préférés.length);
    5
    

Boites de dialogue

Pour intéragir avec l'utilisateur

Dans ce chapitre, nous allons voir le prompt.

Le prompt

La méthode prompt affiche une boîte de dialogue avec un message et une zone de saisie.

Elle s'écrit texte_saisi = prompt("instruction")

  • 			
    let nom_utilisateur = prompt("Nom :");
    console.log(nom_utilisateur);
    

Prompt d'un entier

Grâce à la fonction parseInt

Comme le prompt renvoie du texte, l'associer à la fonction parseInt permet de récupérer un entier.

  • 			
    let choix = parseInt(prompt("1 ou 2:"));
    

Les structures de contrôle

Pour organiser et contrôler l'ordre d'exécution du code

Dans ce chapitre, nous allons voir les conditions, les boucles et les fonctions.

Les blocs

Les accolades { } permettent de définir un bloc de code.

Les instructions que l'on veut grouper sont placées entre les accolades.

  • 			
    {
        const first_name = "nico";
        window.alert( "Welcome " + first_name);
    }
    

Les conditions

Les conditions if et switch

L'instruction if

On l'utilise en général avec else if et else.

La structure conditionnelle s'écrit if (condition){instruction} else if {instruction} else {instruction}

  • 			
    let nombre = 10;
    if (nombre > 0) {
        console.log("Le nombre est positif");
    } else if (nombre < 0) {
        console.log("Le nombre est négatif");
    } else  {
        console.log("Le nombre est 0");
    }
    

Les opérateurs de comparaisons

Ils permettent de faire les tests conditionnels.

Le tableau suivant présente les opérateurs de comparaisons.

OpérateurSignification
<Inférieur
<=Inférieur égal
>Supérieur
>=Supérieur égal
===Egal
!==Différent

L'instruction switch

Elle permet de tester une expression parmis plusieurs choix.

La structure conditionnelle switch s'écrit switch (expression){case valeur_1: instruction; break; case valeur_n: instruction; break; default: instruction;}

  • 		
    let commentaire;
    let star = parseInt(prompt("Noter ce film entre 1 et 4: "));
    switch (star){
        case 1:
            commentaire = "mauvais!";
            break;
    	case 2:
            commentaire = "moyen.";
            break;
        case 3:
            commentaire = "bon.";
            break;
        case 4:
            commentaire = "à ne pas manquer!";
            break;
        default:
            commentaire = "indéfini. Nombre d'étoiles non valide.";
    }
    window.alert("Ce film est "+ commentaire);
    

Les boucles

Les boucles for et while

La boucle for

La boucle for est utilisée pour un nombre connu d'itérations.

Elle s'écrit for (let compteur = valeur_initiale; condition; incrémentation) {instruction}

  • 			
    for (let i = 0; i < 3; i++) {
        console.log(i);
    }
    

La boucle while

La boucle while est utilisée pour un nombre inconnu d'itérations.

Elle s'écrit while (condition) {instruction}

  • 			
    let i = 0;
    while (i < 3) {
        console.log(i);
        i++;
    }
    

Les fonctions

Une fonction permet de réutiliser des blocs de code.

Elle peut accepter des paramètres en entrée et renvoyer une valeur en sortie.
Une fonction s'écrit function ma_fonction(mon_paramètre) {instructions; return ma_sortie}
L'exemple suivant présente la fonction calcul_carre avec entier en paramètre et resultat en sortie.

  • 			
    let entier = parseInt(prompt("Nombre entier: "));
    function calcul_carre(entier) {
        let resultat = entier * entier;
        return = resultat;
    }
    let resultat = calcul_carre(entier);
    window.alert("Le carré de " + entier + " vaut " + resultat);
    

Intéractions

Grâce au DOM (Document Object Model)

Le script intéragit avec le DOM pour modifier le contenu de la page web.
Dans ce chapitre, nous allons voir les méthodes getElementById.

Sélection d'un élément avec son id

La méthode getElementById permet de sélectionner un élément avec son id.

Elle s'écrit document.getElementById("mon_id").
Dans l'exemple suivant, on affiche la balise ayant l'id first_div.

  • 
    let balise_first_div = document.getElementById("first_div");
    console.log(balise_first_div);
    

Sélection d'éléments grâce aux sélecteurs css

Un sélecteur CSS est une chaine de caractères permettant de cibler des éléments HTML pour leur appliquer un style css.

La méthode querySelector

Elle permet de sélectionner le premier élément correpondant à un sélecteur CSS.

Elle s'écrit document.querySelector("mon_sélecteur").
Dans l'exemple suivant, on affiche le premier élément correspondant au sélecteur strong de l'id first_div.

  • 
    let balise_first_strong = document.querySelector("#first_div strong"");
    console.log(balise_first_strong);
    

La méthode querySelectorAll

Elle permet de sélectionner tous les éléments correpondant à un sélecteur CSS.

Elle s'écrit document.querySelectorAll("mon_sélecteur").
Dans l'exemple suivant, on affiche tous les éléments de type h2.

  • 
    let titres_h2 = document.querySelectorAll("h2");
    console.log(titres_h2);
    

Boucler sur les éléments trouvés

Avec la boucle for

On va boucler sur les titres h2 trouvés précédemment.

  • 			
    for (let i = 0; i < titres_h2.length; i++) {
        console.log(titres_h2[i]);
    }
    

Sélectionner du texte d'une balise

Les propriétés innerText et textContent

Elles permettent d'accéder et de modifier le texte à l'intérieur de la balise sélectionnée.

La propriété innerText

Dans l'exemple suivant, on modifie le texte de balise_first_div.

  • 			
    balise_first_div.innerText  = "Texte modifié";
    

La propriété textContent

Dans l'exemple suivant, on ajoute du texte à la balise nouveau_paragraphe.

  • 
    nouveau_paragraphe.textContent = "Ceci est un nouveau paragraphe";
    

Modifier un attribut

La méthode setAttribute permet de modifier un attribut pour un élément spécifié.

Elle s'écrit élément_sélectionné.setAttribute("nom_attribute", "nouvelle_valeur").
Dans l'exemple suivant, on sélectionne l'élément html avec l'id first_id et on remplace sa classe blue par la classe red.

  • 
    let first_id_element = document.getElementById("first_id");
    first_id.setAttribute("class", "red");
    

Sélection des classes

La propriété classList permet de lister les classes d'un élément.

Elle s'écrit élément_sélectionné.classList.
Associée aux méthodes add, remove et replace elle permet d'ajouter, supprimer et remplacer une classe d'un élément.
Pour ajouter un élément, on écrira par exemple, élément_sélectionné.classList.add("nouvelle_classe").

  • 
    first_id.classList.add("big_font");
    

Ajouter une balise

Créer une balise puis l'ajouter à un noeud parent

La méthode CreateElement

La méthode CreateElement permet de créer une balise html.

  • 
    let nouveau_paragraphe = document.createElement("p");
    

La méthode appendChild

Elle permet d'ajouter un noeud à un noeud parent.

Dans l'exemple suivant, on ajoute le nouveau paragaphe à balise_first_div.

  • 
    balise_first_div.appendChild(nouveau_paragraphe);
    

Contenu HTML

Le contenu de l'élément est l'ensemble de l'élément, balises et texte inclus.

La propriété innerHTML

Elle permet de sélectionner ou définir le contenu d'un élément HTML.

  • 
    dernier_paragraphe.innerHTML = "<p>Ceci est le dernier paragraphe.</p>";
    

Les backquotes

Ils permettent d'ajouter du code dans un élément HTML.

Pour insérer le contenu d'une variable dans un élément HTML, il faut remplacer les doubles quotes " " par des backquotes ` ` et écrire ${ma_variable}.
Remarque: Cela fonctionne aussi avec innerText.

  • 
    let rang = "dernier"
    dernier_paragraphe.innerHTML = `<p>Ceci est le <strong>${rang}</strong> paragraphe.</p>`;
    

Les évènements

Un évènement est un signal envoyé suite à une action sur la page web.

Dans ce chapitre, nous allons voir la méthode addEventListener et les principaux types d'évènements.

Ecouter un évènement

La méthode addEventListener permet d'écouter si un évènement se produit et d'éxécuter une action.

Elle s'écrit mon_élément.addEventListener("mon_évènement, function() {action}

  • 
    let mon_bouton = document.getElementById("mon_bouton");
    mon_bouton.addEventListener("click", function () {
        window.alert("Click bien reçu");
    });
    

La fonction fléchée

Elle permet un appel simplifié de la fonction.

  • 
    mon_bouton.addEventListener("click", () => {
        window.alert("Click bien reçu");
    });
    

La variable event

Elle permet de récupérer les informations de l'évènement.

Associée à la méthode addEventListener, elle s'écrit mon_élément.addEventListener("mon_évènement, function() {action}

Le tableau suivant présente les principaux événements.

EvènementDescription
changeLa valeur d'un élément de formulaire a changé.
clickUn élément est cliqué.
DOMContentLoadedLe DOM de la page est entièrement chargé.
keypressUne touche du clavier est appuyée.
mouseoverLa souris est sur un élément.
submitLe formulaire est envoyé.

Associées à l'évènement click, la propriété target fournit l’élément HTML qui a déclenché l’événement et
les propriétés clientX et clientY fournissent les coordonnées de la souris.
Associée à l'évènement keypress, la propriété key fournit la touche clavier appuyée.

  • 
    document.addEventListener("keypress", (event) => {
        console.log(event.key);
    });
    

Les formulaires

Les formulaires permettent de recueillir des informations auprès des utilisateurs.

Un formulaire contient un ensemble de champs dans lequel l'utilisateur peut saisir des données.

Formulaire texte

La propriété value permet de récupérer la donnée.

Dans l'exemple suivant, on vient chercher la balise input grâce à son id nom.
Puis on écoute si sa valeur change avec la méthode addEventListen et l'évènement change.
Ensuite on récupère la valeur rentrée grâce à la propriété value.
Enfin, on affiche sa valeur dans la console.

html

  • 
    <form>
        <label for="nom">Entrez votre nom:</label>
        <input type="nom" id="nom" name="nom" placeholder="Votre nom" required>
    </form>
    

javascript

  • 
    let champ_nom = document.getElementById("nom");
    champ_nom.addEventListener("change", () => {
        let nom = champ_nom.value;
        console.log("Votre nom est : " + nom);
    });
    

Formulaire de cases à cocher

La propriété checked permet de savoir si la case est cochée.

Dans l'exemple suivant, on vient chercher la balise input grâce à son id daccord.
Puis on écoute si sa valeur change avec la méthode addEventListen et l'évènement change.
Ensuite on récupère la valeur rentrée grâce à la propriété checked.
Enfin, on affiche sa valeur true ou false dans la console.

html

  • 
    <form>
        <label for="daccord">Cochez la case si vous êtes d'accord:</label>
        <input type="checkbox" id="daccord">
    </form>
    

javascript

  • 
    let champ_daccord = document.getElementById("daccord");
    champ_daccord.addEventListener("change", () => {
        let daccord = champ_nom.checked;
        console.log("La case daccord vaut: " + daccord);
    });
    

Formulaire de boutons radio

Boucle sur l'ensemble des boutons

Dans l'exemple suivant on sélectionne l'ensemble des boutons grâce à la méthode querySelectorAll et la propriété name equipe.
Ensuite on boucle sur les équipes et on récupère l'équipe sélectionnée grâce aux propriétés checked et value.

html

  • 
    <form>
        <label Equipe:</label>
        <input type="radio" id="france" name="equipe" value="france" checked>
        <label for="france">France</label>
        <input type="radio" id="allemagne" name="equipe" value="allemagne">
        <label for="allemagne">Allemagne</label>
    </form>
    

javascript

  • 
    let champ_equipes = document.querySelectorAll('input[name="equipe"]');
    let equipe = "";
    for (leti = 0; i < champ_equipes.length; i++) {
        champ_equipes[i].addEventListener("change", () => {
        if (champ_equipes[i].checked) {
            equipe = champ_equipes[i].value;
            console.log("L'équipe " + equipe + " est sélectionnée.");
            }
        })
    };
    

Le bouton submit

Il permet de soumettre un formulaire.

Par défaut, le bouton submit entraine un rechargement automatique de la page.
Il faut donc utiliser la méthode preventDefault pour emêcher le rechargement automatique.

html

  • 
    <form id="form_ville">
        <label for="ville">Entrez votre ville:</label>
        <input type="text" id="ville" name="ville" placeholder="Votre ville" required>
        <button>Envoyer</button>
    </form>
    

javascript

  • 
    let form_ville = document.getElementById("form_ville");
    form_ville.addEventListener("submit", (event) => {
        event.preventDefault();
        let ville = document.getElementById("ville").value;
        console.log("Votre ville est :" + ville);
    };
    

Les scripts

Un script est un fichier.js contenant le code javascript.

Dans ce chapitre, nous allons voir les scripts javascript et comment les utiliser.

Utilisation

La balise <script> permet d'appeler le script dans le html.

Elle s'écrit <script src="mon_script.js" > </script>
Il faut mieux placer la balise <script> dans la section <head> pour que le script soit chargé avant l'affichage de la page.
Remarque: Pour plus de modularité, il est possible de créer plusieurs fichiers .js.
Dans l'exemple suivant, la page index.html appelle le script main.js et la boite de dialogue "Welcome!" est affichée.

index.html

  • 
    <!DOCTYPE HTML>				
    <html lang="fr">
    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <title>Document</title>
        <script src="main.js"></script>
    </head>
    <body>
    </body>
    </html>
    

main.js

  • 			
    window.alert("Welcome!");
    

L'atribut defer

Il permet d'éxécuter le script une fois tout le document analysé.

Il se place dans la balise script

  • 			
     <script src="main.js" defer></script>
    

logo nicot3m © 2023 nicot3m - Site web réalisé par Nicolas Habrias - Tous droits réservés - Contact: nicot3m@gmail.com