Menu navbar Galerie

Fermé
WireFire Messages postés 9 Date d'inscription mercredi 22 mai 2019 Statut Membre Dernière intervention 15 juin 2019 - Modifié le 25 mai 2019 à 00:49
WireFire Messages postés 9 Date d'inscription mercredi 22 mai 2019 Statut Membre Dernière intervention 15 juin 2019 - 25 mai 2019 à 11:19
Bonjour,

j'ai un menu avec plusieurs liens, chacun de ces derniers dispose d'un liens href vers son bloc correspondant, (liens genre des boutons quoi pour naviguer) et je dispose de ce code JS pour effectuer le changement de bloc lors du clic sur un lien mais il me semble pas bien marcher :

JS :

(function() {
wdgGalerie = function (sClassBt, sClassActive) {
this.oLast = null;
this.sClassActive = null;
this.show = function(oEvent){
var oBt = oEvent.currentTarget, oElem ;
oEvent.stopPropagation();
oEvent.preventDefault();
if(this.oLast){
this.oLast.classList.remove(this.sClassActive);
oElem = document.getElementById(this.oLast.hash.replace('#',''));
if(oElem){
oElem.classList.remove(this.sClassActive);
}
}
this.oLast = oBt;
oBt.classList.add(this.sClassActive);
oElem = document.getElementById(oBt.hash.replace('#',''));
if(oElem){
oElem.classList.add(this.sClassActive);
}
};

init.call(this,sClassBt, sClassActive);
}
function init (sClassBt, sClassActive){
if(!sClassBt || !sClassActive){
throw "Parameter invalid";
}
var aBts = document.getElementsByClassName(sClassBt);
this.sClassActive = sClassActive;
for(var i = 0; i< aBts.length;i++){
aBts[i].addEventListener('click', this.show.bind(this));
if(aBts[i].classList.contains(this.sClassActive)){
this.oLast=aBts[i];
}
}
}
})();
document.addEventListener('DOMContentLoaded',function(){
new wdgGalerie("bt_galerie","active");
});


HTML --------------------------------------------


<!------------------------- SECTION PAGE GALERIE ------------------------------>

<section data-anchor="Page 3" class="page-3">
<div id="bloc_galerie">
<div id="texte_menu">
<div id="texte">
<h2>Notre Galerie</h2>
</div>
<div id="menu">
<img src="Images/Ligne_sep.png" alt="">
<a href="#bloc_salon" style="margin-left:100px;" class="active bt_galerie">Salon</a>
<a href="#bloc_coiffure" class="bt_galerie">Coiffure</a>
<a href="#bloc_esthetique" class="bt_galerie">Ésthétique</a>
<a href="#bloc_beaute" class="bt_galerie">Beauté</a>
<img src="Images/Ligne_sep.png" style="margin-right: 20px;" alt="">
</div>
</div>
<div id="bloc_images" class="">
<div id="bloc_salon" class="tab active">
<img src="Images/Photo1.jpg" alt="">
<img src="Images/Photo2.jpg" alt="">
<img src="Images/Photo3.jpg" alt="">
<img src="Images/Photo4.jpg" alt="">
<img src="Images/Photo5.jpg" alt="">
</div>
<div id="bloc_coiffure" class="tab">
<p>HELLOOOOOOOOOOOOO</p>
</div>
<div id="bloc_esthetique" class="tab">
<p>HELLOOOOOOOOOOOOO</p>
</div>
<div id="bloc_beaute" class="tab">
<p>HELLOOOOOOOOOOOOO</p>
</div>
</div>
</div>
</section>


Merci de votre aide,

cordialement.

Configuration: Windows / Chrome 74.0.3729.157
A voir également:

2 réponses

jordane45 Messages postés 38138 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 avril 2024 4 649
25 mai 2019 à 01:08
Bonjour
tu dis que ça ne semble pas bien fonctionner.. peux-tu expliquer en quoi ça ne fonctionne pas correctement ?

as-tu également vérifié si tu avais des messages d'erreur dans la console de ton navigateur ?
0
WireFire Messages postés 9 Date d'inscription mercredi 22 mai 2019 Statut Membre Dernière intervention 15 juin 2019
Modifié le 25 mai 2019 à 01:12
Oui en effet, j'ai un message d'erreur comme quoi wdgGalerie n'est pad défini mais étant donné mon niveau bas encore en JS, je ne sait comment m'y prendre avec ce code.


En gros ça ne fait rien, rien ne se passe. Et lorsque je clique sur salon par exemple, et seulement lui, j'ai un bug qui me fait monter a page en haut.
0
jordane45 Messages postés 38138 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 avril 2024 4 649
25 mai 2019 à 01:24
Où as tu inclus tes scripts js dans ta page?

Dans l'idéal, il faudrait que tu nous montres le code généré (le code source affiché depuis ton navigateur ) de ta page dans ton navigateur (raccourci clavier ctrl+u )
0
WireFire Messages postés 9 Date d'inscription mercredi 22 mai 2019 Statut Membre Dernière intervention 15 juin 2019
Modifié le 25 mai 2019 à 01:27
mes scripts sont tous dans un seul et même fichier source : index.js
voici mon site web en hebergement : https://lhair-du-temps.000webhostapp.com/

Cordialement.
0
jordane45 Messages postés 38138 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 avril 2024 4 649
Modifié le 25 mai 2019 à 11:02
Dans ton JS tu as 'use strict';
Tu dois donc DECLARER chaque variable par le mot VAR
Essaye donc de modifier la ligne
(function() {
  wdgGalerie = function (sClassBt, sClassActive) {

par
(function() {
 var wdgGalerie = function (sClassBt, sClassActive) {


NB: Comme tu peux le voir, le code que je te poste est en couleur...
pour ça il faut préciser le LANGAGE dans les balises de code, tel qu'expliqué ici : https://codes-sources.commentcamarche.net/faq/11288-les-balises-de-code

Merci de le faire dans tes prochains messages
0
WireFire Messages postés 9 Date d'inscription mercredi 22 mai 2019 Statut Membre Dernière intervention 15 juin 2019
Modifié le 25 mai 2019 à 11:20
Bonjour, merci de ta réponse,
j'avais en effet déjà eu cette idée, mais lorsque je rajoute un var j'ai une autre erreur au niveau de l'appel du script qui est :
document.addEventListener('DOMContentLoaded',function(){
  new wdgGalerie("bt_galerie","active"); 
});


il me précise dans la console comme quoi :


Je ne vois pas d'ou vient le problème,

cordialement.
0