Vous devez créer une page web qui affiche une galerie d’images de chats.
Les images ne doivent pas être écrites directement dans le HTML.
Elles doivent être récupérées depuis une API, puis ajoutées dans la page avec JavaScript.
Cet exercice sert à pratiquer :
fetch();while;Vous devez créer deux fichiers :
index.html
catsanddogs.js
Le fichier HTML contient la structure de la page. Le fichier JavaScript contient le code qui interroge l’API et crée les images.
Quand l’utilisateur ouvre la page, il doit voir :
Quand l’utilisateur clique sur le bouton, votre script doit :
Votre page HTML doit contenir au minimum :
<h1> ;load ;gallery ;La galerie doit être placée dans une balise <section>.
Aide :
<button id="load">Charger des chats</button>
<section id="gallery" aria-live="polite"></section>
N’oubliez pas de relier votre fichier JavaScript à la fin du <body>.
Aide :
<script src="catsanddogs.js"></script>
Dans le fichier catsanddogs.js, vous devez commencer par sélectionner :
Aide :
let btn = document.querySelector(...);
let gallery = document.querySelector(...);
Vous devez utiliser les identifiants définis dans le HTML.
Le chargement des images ne doit pas se faire automatiquement.
Il doit se faire uniquement quand l’utilisateur clique sur le bouton.
Vous devez donc utiliser :
addEventListener('click', ...)
Aide :
btn.addEventListener('click', () => {
// le code de chargement ira ici
});
À l’intérieur du clic, vous devez interroger cette API :
https://api.thecatapi.com/v1/images/search?limit=10
Cette URL demande 10 images de chats.
Vous devez utiliser fetch().
Aide :
fetch('https://api.thecatapi.com/v1/images/search?limit=10')
La réponse de fetch() n’est pas encore directement utilisable.
Vous devez utiliser .json() pour transformer la réponse en données JavaScript.
Aide :
.then(response => response.json())
Après .json(), vous devez récupérer les données dans un deuxième .then().
Vous pouvez appeler la variable cats.
Aide :
.then(cats => {
// ici, cats contient le tableau reçu depuis l’API
});
Pour vérifier vos données, vous pouvez afficher le tableau dans la console.
Aide :
console.log(cats);
console.log(cats.length);
Attention : cats est un tableau.
Chaque élément du tableau contient une propriété url.
Si l’utilisateur clique plusieurs fois sur le bouton, il ne faut pas accumuler toutes les anciennes images.
Avant de créer les nouvelles images, videz la galerie.
Aide :
gallery.innerHTML = '';
Vous devez parcourir le tableau reçu avec une boucle while.
Vous ne devez pas utiliser forEach() ou map().
Aide :
let i = 0;
while (i < cats.length) {
// créer une image ici
i = i + 1;
}
Attention : si vous oubliez i = i + 1, votre boucle ne s’arrêtera jamais.
Dans la boucle, vous devez créer une balise <img> avec JavaScript.
Aide :
let img = document.createElement('img');
Ensuite, vous devez remplir son attribut src avec l’URL de l’image.
Aide :
img.src = cats[i].url;
Vous devez aussi ajouter un texte alternatif.
Aide :
img.alt = 'Image de chat';
Créer une image ne suffit pas.
Pour qu’elle apparaisse dans la page, vous devez l’ajouter dans la section #gallery.
Aide :
gallery.appendChild(img);
Vous devez utiliser :
querySelectoraddEventListenerfetch.then.json()whilecreateElementappendChildVous ne devez pas utiliser :
async / awaitforEachmapAu chargement de la page :
Après un clic sur le bouton :
src et un attribut alt.Avant de rendre l’exercice, vérifiez que :
cats.length correspond au nombre d’images reçues ;while s’arrête correctement ;#gallery.Si votre galerie fonctionne, vous pouvez ajouter un peu de CSS pour rendre les images plus lisibles.
Exemples possibles :
object-fit: cover.Cette partie est optionnelle. Le plus important est le fonctionnement JavaScript.