M3203 - Programmation objet et événementielle - TP1
Objectifs de la séance
- Comprendre la notion de DOM
- Savoir accéder aux éléments du DOM
- Savoir modifier les éléments du DOM
- Savoir manipuler le DOM, ajouter et supprimer des éléments
Pré-requis
- Connaître les bases de la programmation : notions de variables, structures conditionnelles, structures itératives, sous-programme
- Connaître la syntaxe de Javascript. Si besoin, une fiche de rappels est disponible ici.
Exercice 1 : Logo hijack
DOM
- Allez sur la page
http://www.google.com
- Ouvrez la console web
- Cherchez le logo Google dans le code source, remarquez son id
- Dans la console, accédez à l'élément correspondant au logo et stockez-le dans une variable
- Modifiez la source de l'image pour la remplacer par l'image de votre choix
- Cherchez les boutons "Recherche Google" et "J'ai de la chance". Stockez-les dans une variable
- Remplacez le texte de chaque bouton par la valeur de votre choix

Exercice 2 : Page d'accueil
DOM
Ouvrez un nouveau fichier et copiez-y ce document HTML :
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8"/>
<title>Ma page</title>
</head>
<body>
<h1>Moi</h1>
<ul>
<li>Surnom: <span id="surnom"></span></li>
<li>Loisirs: <span id="loisirs"></span></li>
</ul>
<button type="button">sdfhzhs</button>
</body>
</html>
- Ajoutez une balise
script
à la fin du document. Vous travaillerez exclusivement à l'intérieur de celle-ci dans la suite de l'exercice. - Changez la police de l'élément
body
à Helvetica - Changez la taille de la police de l'élément
body
à 12pt - Vous allez maintenant ajouter vos propres informations à la page :
- Récupérez l'élément
span
d'identifiantsurnom
- Ajoutez votre surnom comme contenu textuel à l'élément
span
- Procédez de la même façon pour ajoutez vos loisirs dans le document à partir de l'élément
span
d'identifiantloisirs
- Récupérez l'élément
- On va ajouter un nouvel évènement à la liste pour y mentionner l'âge :
- Créez un nouvel item de liste
- Modifiez le contenu HTML de cet item pour y ajouter votre âge en prenant exemple sur les items précédents
- Récupérez la liste HTML
ul
et ajoutez votre nouvel item à la liste
- Pour finir, on va ajouter la classe
item
aux éléments de la liste :- Stockez dans une variable tous les éléments de la liste
- Parcourez ces éléments et ajoutez à chacun d'entre eux la classe
item
- Ajoutez une balise
style
au document et définissez la couleur de la classeitem
à bleu - Supprimez le bouton qui a été inséré par erreur dans le document
- Pour compléter la page, vous allez ajouter votre avatar :
- Créez un nouvel élément
img
- Définissez sa source avec l'attribut
src
avec l'image de votre choix - Ajoutez cet élément à l'élement
body
- Créez un nouvel élément
Exercice 3 : FizzBuzz
DOM boucles
- Créez un nouveau fichier HTML et créez un script qui affiche les nombres de 0 à 100 dans une liste
ul
. - Si le nombre est multiple de 3, affichez la valeur du nombre puis Fizz.
- Si le nombre est multiple de 5, affichez la valeur du nombre puis Buzz.
- Quand le nombre est multiple de 3 et 5, le script affiche alors la valeur du nombre puis FizzBuzz.
Vous devez obtenir ceci :

Exercice 4 : Tirage du loto
DOM boucles
On va simuler un tirage de loto, de 5 numéros + un complémentaire, parmi une collection de 59 numéros (de 1 à 59) où dans un tirage chaque numéro ne peut sortir qu'une seule fois. On affichera la combinaison obtenue.
Voici un exemple de ce que l'on peut obtenir :

Vous pouvez stocker les nombres de 1 à 59 dans des éléments HTML ou un tableau. Plusieurs solutions sont possibles. Pour générer un nombre aléatoire, vous pouvez utiliser Math.random. Vous pouvez aussi vous aider de Array.prototype.splice() pour retirer un élément d'un tableau ou de removeChild pour supprimer un nœud. Les étapes à suivre :
- On génère les nombres de 1 à 59
- Pour chaque nombre à tirer (6 au total) :
- On tire au hasard un indice
- On retire la valeur correspondante de la série
- Et on l'affiche
Exercice 5 : Barre de progression
DOM fonctions
Vous allez programmer une barre de progression. Ouvrez un nouveau fichier et copiez-y ce document HTML :
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>Progression</title>
<style type="text/css">
div {
display: inline-block;
height: 30px;
position: relative;
left: 0px;
background-color: orangeRed;
}
body{
width: 500px;
}
</style>
</head>
<body>
<div id='progressbar'></div>
<script type="text/javascript">
</script>
</body>
</html>
- Déclarez une variable
counter
et initialisez là à 0. Elle représentera la valeur de la progression de la barre. - Écrivez une fonction
addDiv
qui incrémente le compteurcounter
de 1 et met à jour la largeur de la div d'identifiantprogressbar
avec sa nouvelle valeur (en %). - En utilisant la fonction setInterval, appelez la fonction
addDiv
toutes les 20ms - Testez le résultat
- Bonus : Comment stopper la barre de progression à 100% ? (lisez bien la documentation !)