J'utilise le tuto de galerie en js d'Alsacréations
J'utilise 3 formats d'images : miniature (picto1-s.jpg), moyen (picto1.jpg) et grand (picto1-b.jpg)
Voici mes sources :
L'affichage de l'image du centre :
<div id="img-rea-centre"> <img id="img-centre" src="/v2/assets/images/projets/3/picto1.jpg" alt="" /> </div>
La liste des images de la galerie
<ul id="galerie-rea"> <li><a href="/v2/assets/images/projets/3/picto1.jpg"><img src="/v2/assets/images/projets/3/picto1-s.jpg" alt="" /></a></li> <li><a href="/v2/assets/images/projets/3/picto2.jpg"><img src="/v2/assets/images/projets/3/picto2-s.jpg" alt="" /></a></li> <li><a href="/v2/assets/images/projets/3/picto3.jpg"><img src="/v2/assets/images/projets/3/picto3-s.jpg" alt="" /></a></li> </ul>
Un lien pour agrandir encore plus l'image
<div id="rea-zoom"><a id="zoom-pict" href="/v2/assets/images/projets/3/picto1-b.jpg">Agrandir l'image</a></div>
Voici le .js
function displayPics()
{
var photos = document.getElementById('galerie-rea');
// On récupère l'élément ayant pour id galerie-rea (ul)
var liens = photos.getElementsByTagName('a');
// On récupère dans une variable tous les liens contenu dans galerie_mini
var photo_centre = document.getElementById('img-centre');
// Ici c'est l'élément ayant pour id big_pict qui est récupéré, c'est notre photo en taille normale
var zoom = document.getElementById('zoom-pict');
// Une boucle parcourant l'ensemble des liens contenu dans galerie-rea
for (var i = 0; i < liens.length; ++i) {
// Au clique sur ces liens
liens[i].onclick = function() {
photo_centre.src = this.href; // On change l'attribut src de l'image en le remplaçant par la valeur du lien
zoom.href = this.href;
return false; // Et pour finir on inhibe l'action réelle du lien
};
}
}
window.onload = displayPics;
// Il ne reste plus qu'à appeler notre fonction au chargement de la page
Le tuto me permet, en cliquant sur une miniature, de modifier l'image de taille moyenne. Jusque là, tout marche.
L'étape suivante consisterait à afficher l'image grand format (picto1-b.jpg) et donc de modifier le href de mon dernier code HTML (#zoom-pict).
Pour cela, j'ai modifié le .js mais mes compétences en javascript étant limitées, je ne suis pas sure de moi.
Script modifié : (les lignes précédées de ** sont les lignes que j'ai ajoutées)
function displayPics()
{
var photos = document.getElementById('galerie-rea');
// On récupère l'élément ayant pour id galerie-rea (ul)
var liens = photos.getElementsByTagName('a');
// On récupère dans une variable tous les liens contenu dans galerie_mini
var photo_centre = document.getElementById('img-centre');
// Ici c'est l'élément ayant pour id big_pict qui est récupéré, c'est notre photo en taille normale
** var zoom = document.getElementById('zoom-pict');
** //Je récupére l'élément qui me permet de faire le lien vers l'image grand format
// Une boucle parcourant l'ensemble des liens contenu dans galerie-rea
for (var i = 0; i < liens.length; ++i) {
// Au clique sur ces liens
liens[i].onclick = function() {
photo_centre.src = this.href; // On change l'attribut src de l'image en le remplaçant par la valeur du lien
** if {this.href == /v2/assets/images/projets/3/picto1.jpg} { // si l'image moyenne affichée est le numéro 1
** zoom.href = /v2/assets/images/projets/3/picto1-b.jpg // alors j'affiche l'image grand format n°1
** };
** else
** {
** if {this.href == /v2/assets/images/projets/3/picto2.jpg} // on traite l'image 2, et etc....
** }
** zoom.href = this.href; // on affiche le bon href
return false; // Et pour finir on inhibe l'action réelle du lien
};
}
}
window.onload = displayPics;
// Il ne reste plus qu'à appeler notre fonction au chargement de la page
Mais ça ne fonctionne pas, probablement car les instructions que j'ai données sont fausses ? Peut-on faire un test if sur this.href ?
(La question a déjà été posée sur le forum d'Alsa et j'ai décidé de faire un doublon sur le HUB au vu de l'absence de réponse sur Alsa... quelle que soit la solution apportée, je la rapporterai ensuite sur le forum d'Alsa bien sûr



Haut












