24 - JavaScript
Cours associés : 14 - HTML DOM , 15 - JavaScript .
QCM – vérification des prérequis
Pour chaque question, une seule réponse est correcte.
1. Quelle méthode JavaScript permet de sélectionner un élément HTML par son identifiant ?
- A.
document.querySelector("id") - B.
document.getElementById("id") - C.
document.getElement("id") - D.
document.findById("id")
Correction publiée après la séance.
2. Quel attribut HTML permet d’exécuter du JavaScript au clic sur un bouton ?
- A.
onhover - B.
onclick - C.
onpress - D.
action
Correction publiée après la séance.
3. Que fait document.createElement("div") ?
- A. Il sélectionne tous les
<div>de la page - B. Il crée un nouvel élément
<div>en mémoire (sans l’ajouter à la page) - C. Il supprime le premier
<div>de la page - D. Il modifie le contenu du premier
<div>
Correction publiée après la séance.
4. Quelle propriété permet de modifier le texte affiché dans un élément HTML ?
- A.
element.value - B.
element.textContent - C.
element.src - D.
element.href
Correction publiée après la séance.
Exercice 1
Créer un fichier html contenant un bouton. Ajouter la fonction (en JavaScript) qui permet d’afficher une fenêtre contenant le message "Hello World !" lorsque l’on clique sur le bouton.
Indice
La fonction se définit dans une balise <script>, avec le mot-clé function. L’attribut onclick du bouton l’appelle, et alert affiche la fenêtre.
Code à copier puis compléter
<!DOCTYPE html>
<html lang="fr">
<head>
<meta charset="utf-8">
<title>Exercice 1</title>
<script>
function direBonjour() {
...
}
</script>
</head>
<body>
<button onclick="...">Cliquer ici</button>
</body>
</html>
Correction publiée après la séance.
Exercice 2
Ajouter un champ de saisie texte au fichier html. Ajouter la fonction (en JavaScript) qui permet d’afficher une fenêtre contenant la valeur de ce champ de saisie lorsque l’on clique sur le bouton.
Indice
Donner un id au champ de saisie, par exemple saisie : document.getElementById("saisie").value contient alors le texte tapé au moment du clic.
Correction publiée après la séance.
Exercice 3
Soit le fichier html :
<!DOCTYPE html>
<html lang="fr">
<head>
<meta charset="utf-8">
<title>Écriture d'une fonction simple</title>
<script>
</script>
</head>
<body>
<h1>Écriture d'une fonction simple</h1>
<p>Cliquez sur le bouton pour lancer la fonction : <button onclick="surfaceRectangle()">Lancer la fonction</button></p>
</body>
</html>
On souhaite utiliser les fonctions alert (qui affiche une chaîne de caractères) et prompt (qui invite à la saisie d’une donnée), dont voici les syntaxes :
alert(Chaîne à afficher à l'écran)variable = prompt(Question à afficher à l'écran)
Compléter le fichier HTML ci-dessus pour que le clic sur le bouton lance une fonction. Cette fonction demande la saisie d’une largeur, d’une longueur et affiche la surface du rectangle correspondant dans une fenêtre.
Indice
prompt renvoie une chaîne de caractères : la convertir en nombre avec Number(...) avant de calculer. La fonction s’écrit dans la balise <script> du fichier.
Code à copier puis compléter
function surfaceRectangle() {
const largeur = Number(prompt("Largeur du rectangle ?"));
const longueur = ...;
alert(...);
}
Correction publiée après la séance.
Exercice 4
Soit le fichier html :
<!DOCTYPE html>
<html lang="fr">
<head>
<meta charset="utf-8">
<title>Mon fichier</title>
</head>
<body>
<h1>Mon fichier</h1>
<div id="dejala">
<span id="asupprimer">Il faut me supprimer</span>
</div>
</body>
</html>
Créer un bouton qui supprime le texte contenu dans la balise
spand’identifiantasupprimerquand on clique dessus (on appellerasupprimerTexte()la fonction utilisée).Indice
document.getElementById("asupprimer")renvoie l’élément : affecter une chaîne vide à sa propriététextContentefface son texte.Créer un bouton qui ajoute le texte « Ce div a été ajouté en utilisant du JavaScript » dans une balise
divnouvellement créée et insérée dans l’élémentdivd’identifiantdejalaquand on clique dessus (on appelleraajouterTexte()la fonction utilisée).Indice
Trois étapes : créer l’élément avec
document.createElement("div"), lui donner son texte avectextContent, puis l’insérer dans ledivd’identifiantdejalaavecappendChild.Code à copier puis compléter
function ajouterTexte() { const div = document.createElement("div"); div.textContent = ...; document.getElementById(...).appendChild(div); }Créer un bouton qui ajoute un carré rouge dans une balise
divnouvellement créée et insérée dans l’élémentdivd’identifiantdejalaquand on clique dessus (on appelleracarreRouge()la fonction utilisée).Indice
Même démarche qu’à la question 2. Le carré est un
divvide, dont la propriétéstylefixe la taille et la couleur :div.style.width = "50px", puisheightetbackgroundColor.
Correction publiée après la séance.
Exercice 5
Soit le fichier html :
<!DOCTYPE html>
<html lang="fr">
<head>
<meta charset="utf-8">
<title>Mon titre</title>
</head>
<body>
<h1 onclick="afficherContenuDiv(1)">Partie 1</h1>
<div id="titre1" style="display:none">
<p>Mon premier paragraphe</p>
<p>Mon second paragraphe</p>
</div>
<h1 onclick="afficherContenuDiv(2)">Partie 2</h1>
<div id="titre2" style="display:none">
<p>Mon premier paragraphe</p>
<p>Mon second paragraphe</p>
</div>
<p><button type="button" onclick="cacherLesDivs()">Masquer</button></p>
<p>
Titre n° : <input type="text" id="titre">
<button type="button" onclick="alertTitre()">Afficher</button>
</p>
</body>
</html>
Écrire la fonction JavaScript
afficherContenuDivpermettant d’afficher le contenu dudivcorrespondant au titre sur lequel on clique.Indice
Le
divà afficher a pour identifiant"titre" + numero. Il est caché pardisplay: none: donner la valeur"block"à sa propriétéstyle.displayle fait apparaître.Écrire la fonction JavaScript
cacherLesDivspermettant de masquer le contenu de tous lesdivdu document.Indice
document.querySelectorAll("div")renvoie tous lesdivdu document : les parcourir avec une bouclefor ... of.Écrire la fonction
alertTitrepermettant d’afficher (avec la fonction JavaScriptalert) le contenu du titre dont le numéro est saisi dans le champtitre.Indice
Le champ
titrecontient le numéro sous forme de chaîne : le convertir avecNumber.document.querySelectorAll("h1")renvoie la liste des titres, dont le premier a l’indice 0.Écrire la fonction
supprimerTitrepermettant d’effacer le contenu du titre dont le numéro est saisi dans le champtitre(suppression du nœud fils de type texte).Indice
Le texte d’un titre est son premier nœud fils,
h1.childNodes[0], qui n’existe que si le titre n’est pas vide ; la méthoderemove()le retire de la page.Écrire la fonction
definirTitrepermettant d’affecter au titre dont le numéro est saisi dans le champtitrela valeur"Nouveau titre". On testera que le titre a ou non déjà une valeur (nœud texte) avant l’ajout, afin de la supprimer si besoin.Indice
Réutiliser
supprimerTitre, puis donner le nouveau texte au titre avectextContent.
Correction publiée après la séance.
Pour aller plus loin : deux activités sur CodePen
Ouvrir chaque pen dans un nouvel onglet, lire les trois onglets HTML, CSS et JS, puis répondre.
Changer la couleur d’un texte avec JavaScript
See the Pen Activité HTML 4 by Razik (@RazikSF) on CodePen.
Quel événement déclenche le changement de couleur, et comment la fonction est-elle reliée à l’élément ?
Modifier le script pour que la couleur change à chaque clic (alterner entre deux couleurs).
Indice
Tester la couleur actuelle de l’élément avec un
if, ou la mémoriser dans une variable déclarée en dehors de la fonction, puis choisir l’autre couleur.
Combinaison de CSS et de JavaScript
See the Pen Activité HTML 6 by Razik (@RazikSF) on CodePen.
Le script modifie-t-il directement le style de l’élément (
element.style) ou une classe CSS (classList) ? Quel est l’avantage de la seconde méthode ?Indice
Avec une classe, où se trouve la mise en forme : dans le script ou dans la feuille CSS ? Qui peut alors la modifier sans toucher au JavaScript ?
Ajouter une règle CSS supplémentaire à la classe utilisée et vérifier qu’elle s’applique au clic sans toucher au script.