listener function) this désigne toujours l'élément sur lequel l'événement a été déclenché.
- Créez et complétez le fichier transformation.js pour qu'un clic sur le bouton
#ajouter
ait pour effet- de demander à l'utilisateur de proposer l'url d'une image (via window.prompt),
- d'utiliser createElement pour créer un élément
<img>
dont la source est cette url, - d'attribuer la classe
image
à cet élément créé, - d'utiliser appendChild pour ajouter cet élément créé
à la fin
du contenu de l'élément#images
.
- Testez (en utilisant par exemple les images fournies dans le dossier images).
- Modifiez la fonction qui permet l'ajout d'une image pour qu'un clic sur l'image ajoutée ait pour effet
- de créer une copie de cet élément image à l'aide de la fonction cloneNode (voir sur le MDN).
Pour la distinguer de l'original vous ajouterez à cette copie une couleur d'arrière-plan,
rgba(0,128,0,0.3)
par exemple. - d' insérer cette copie créée dans l'élément
#images
juste avant l'élément correspondant à son original. Vous utiliserez la fonction insertBefore ainsi que la propriété parentNode (voir sur le MDN).
- de créer une copie de cet élément image à l'aide de la fonction cloneNode (voir sur le MDN).
- Testez.
- Pour éviter les copies multiples, faites en sorte que sur chaque
image originale
seul le premier clic ait un effet, pas les suivants. - Ajoutez un gestionnaire d'événement de telle sorte que lors d'un clic sur une copie, l'élément correspond soit purement et simplement supprimé (de l'arbre DOM). Vous utiliserez la fonction removeChild.
- On va modifier maintenant l'action d'un clic sur les images ajoutées mis en place à la question 3.
Avant de poursuivre, pour en garder une trace, faites une copie du travail précédent ou utilisez des noms de fonction d'écoute différents.On souhaite cette fois qu'un clic sur une des images ajoutées crée à nouveau une copie de cette image mais que cette copie vienne se placer dans l'élément
#stock
.De plus un clic sur le bouton
#raz
aura pour effet de supprimer toutes les images de#images
sans toucher à celle de#stock
. - Testez.
- Faites les modifications nécessaires pour que chaque image ajoutée reçoive un id de la forme
I-image
où I est le numéro d'ajout de l'image (obtenu via un compteur du nombre d'ajouts que vous pouvez gérer à l'aide d'une variable globale). -
A l'aide de la fonction parseInt faites en sorte que lors de la création d'une copie de l'image d'id
N-image
, sa copie reçoive unid
de la formeN-copie
(avec le même N évidemment !). - Complétez ce qui précède pour qu'une fois qu'une image a été copiée, le fait de la survoler à la souris (dans la zone
#images
) a pour effet de mettre en rouge labackground-color
de sa copie. La fin de survol supprime cette coloration.