Précédent   Forum des professionnels en informatique > Webmasters - Développement Web > JavaScript
JavaScript Forum programmation JavaScript. Lire : Cours JavaScript, FAQ JavaScript, Toutes les FAQ JavaScript et Sources JavaScript
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 21/09/2011, 09h09   #1
Invité de passage
 
Homme
Autre
Inscription : septembre 2011
Messages : 16
Détails du profil
Informations personnelles :
Sexe : Homme

Informations professionnelles :
Activité : Autre
Secteur : Arts - Culture

Informations forums :
Inscription : septembre 2011
Messages : 16
Points : 0
Points : 0
Par défaut Les codes s'emmêlent !

Bonjour à tous,
dans une page web, j'essaie de faire cohabiter deux scripts contenus dans deux fichiers externes distincts. Le premier concerne un Megamenu, le second des tabs contenues dans la page. Malheureusement, dès que je clique sur un onglet des tabs... cela déclenche le menu... Bref, je suis perdu, et n'ayant aucune connaissance javascript, je suppose que soit l'un des deux ne se "ferme pas"... ou que les "instructions sont les mêmes"...
Si vous aviez la gentillesse de jeter un oeil à ces codes, et de me dire comment m'en tirer, ce serait sympa...
Merci d'avance à tous.

Code du Megamenu :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
var isIE6 = navigator.userAgent.toLowerCase().indexOf('msie 6') != -1;
 
jQuery.fn.megamenu = function(options) {
  options = jQuery.extend({
                              activate_action: "mouseover",
                              deactivate_action: "mouseleave",
                              show_method: "slideDown",
                              hide_method: "slideUp",
                              justify: "left",
                              enable_js_shadow: true,
                              shadow_size: 3,
                              mm_timeout: 250
                          }, options);
  var $megamenu_object = this;
  if( options.activate_action == "click" ) options.mm_timeout = 0;
  $megamenu_object.children("li").each(function(){
    jQuery(this).addClass("mm-item");
    jQuery(".mm-item").css({ 'float': options.justify });
 
    jQuery(this).find("div:first").addClass("mm-item-content");
    jQuery(this).find("a:first").addClass("mm-item-link");
    var $mm_item_content = jQuery(this).find(".mm-item-content");
    var $mm_item_link = jQuery(this).find(".mm-item-link");
    $mm_item_content.hide();
 
    jQuery(document).bind("click", function(){
      jQuery(".mm-item-content").hide();
      jQuery(".mm-item-link").removeClass("mm-item-link-hover");
    });
    jQuery(this).bind("click", function(e){
      e.stopPropagation();
    });
    $mm_item_content.wrapInner('<div class="mm-content-base"></div>');
    if(options.enable_js_shadow == true) {
      $mm_item_content.append('<div class="mm-js-shadow"></div>');
    }
    var $mm_timer = 0;
    // Activation Method Starts
    jQuery(this).bind(options.activate_action, function(e){
      e.stopPropagation();
      var mm_item_link_obj = jQuery(this).find("a.mm-item-link");
      var mm_item_content_obj = jQuery(this).find("div.mm-item-content");
      clearTimeout($mm_timer);
      $mm_timer = setTimeout(function(){ //Emulate HoverIntent
        mm_item_link_obj.addClass("mm-item-link-hover");
        mm_item_content_obj.css({
          'top': ($mm_item_link.offset().top + $mm_item_link.outerHeight()) - 1 +"px",
          'left': ($mm_item_link.offset().left) - 5 + 'px'
        })
 
        if(options.justify == "left"){
          var mm_object_right_end = $megamenu_object.offset().left + $megamenu_object.outerWidth();
                                    // Coordinates of the right end of the megamenu object
          var mm_content_right_end = $mm_item_link.offset().left + $mm_item_content.outerWidth() - 5 ;
                                    // Coordinates of the right end of the megamenu content
          if( mm_content_right_end >= mm_object_right_end ) { // Menu content exceeding the outer box
            mm_item_content_obj.css({
              'left': ($mm_item_link.offset().left - (mm_content_right_end - mm_object_right_end)) - 2 + 'px'
            }); // Limit megamenu inside the outer box
          }
        } else if( options.justify == "right" ) {
          var mm_object_left_end = $megamenu_object.offset().left;
                                    // Coordinates of the left end of the megamenu object
          var mm_content_left_end = $mm_item_link.offset().left - mm_item_content_obj.outerWidth() + 
                                    $mm_item_link.outerWidth() + 5;
                                    // Coordinates of the left end of the megamenu content
          if( mm_content_left_end <= mm_object_left_end ) { // Menu content exceeding the outer box
            mm_item_content_obj.css({
              'left': mm_object_left_end + 2 + 'px'
            }); // Limit megamenu inside the outer box
          } else {
            mm_item_content_obj.css({
              'left': mm_content_left_end + 'px'
            }); // Limit megamenu inside the outer box
          }
        }
        if(options.enable_js_shadow == true) {
          mm_item_content_obj.find(".mm-js-shadow").height( mm_item_content_obj.height() );
          mm_item_content_obj.find(".mm-js-shadow").width( mm_item_content_obj.width() );
          mm_item_content_obj.find(".mm-js-shadow").css({
            'top': (options.shadow_size) + (isIE6 ? 2 : 0) + "px",
            'left': (options.shadow_size) + (isIE6 ? 2 : 0) + "px",
            'opacity': 0.5
          });
        }
        switch(options.show_method) {
          case "simple":
                mm_item_content_obj.show();
                break;
          case "slideDown":
                mm_item_content_obj.height("auto");
                mm_item_content_obj.slideDown('fast');
                break;
          case "fadeIn":
                mm_item_content_obj.fadeTo('fast', 1);
                break;
          default:
                mm_item_content_obj.each( options.show_method );
                break;
        }
      }, options.mm_timeout);
    });
    // Activation Method Ends
    // Deactivation Method Starts
    jQuery(this).bind(options.deactivate_action, function(e){
      e.stopPropagation();
      clearTimeout($mm_timer);
      var mm_item_link_obj = jQuery(this).find("a.mm-item-link");
      var mm_item_content_obj = jQuery(this).find("div.mm-item-content");
//      mm_item_content_obj.stop();
      switch(options.hide_method) {
        case "simple":
              mm_item_content_obj.hide();
              mm_item_link_obj.removeClass("mm-item-link-hover");
              break;
        case "slideUp":
              mm_item_content_obj.slideUp( 'fast',  function() {
                mm_item_link_obj.removeClass("mm-item-link-hover");
              });
              break;
        case "fadeOut":
              mm_item_content_obj.fadeOut( 'fast', function() {
                mm_item_link_obj.removeClass("mm-item-link-hover");
              });
              break;
        default:
              mm_item_content_obj.each( options.hide_method );
              mm_item_link_obj.removeClass("mm-item-link-hover");
              break;
      }
      if(mm_item_content_obj.length < 1) mm_item_link_obj.removeClass("mm-item-link-hover");
    });
//    Deactivation Method Ends
  });
  this.find(">li:last").after('<li class="clear-fix"></li>');
  this.show();
};
et code des tabs :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
onload = function() {
	var e, i = 0;
	while (e = document.getElementById('gallery').getElementsByTagName ('DIV') [i++]) {
		if (e.className == 'on' || e.className == 'off') {
		e.onclick = function () {
			var getEls = document.getElementsByTagName('DIV');
				for (var z=0; z<getEls.length; z++) {
				getEls[z].className=getEls[z].className.replace('show', 'hide');
				getEls[z].className=getEls[z].className.replace('on', 'off');
				}
			this.className = 'on';
			var max = this.getAttribute('title');
			document.getElementById(max).className = "show";
			}
		}
	}
}
Patrice-83 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/09/2011, 09h46   #2
Rédacteur
 
Avatar de jreaux62
 
Homme Jérôme Réaux
Webdesigner
Inscription : août 2008
Messages : 2 993
Détails du profil
Informations personnelles :
Nom : Homme Jérôme Réaux
Âge : 45
Localisation : France, Pas de Calais (Nord Pas de Calais)

Informations professionnelles :
Activité : Webdesigner
Secteur : Arts - Culture

Informations forums :
Inscription : août 2008
Messages : 2 993
Points : 5 786
Points : 5 786
Envoyer un message via Skype™ à jreaux62
Bonjour,
Les codes ne s'emmêlent pas, mais le 2ème interfère sur toute la page, au lieu de ne s'occuper que du <div id="gallery">.

Essaie en remplaçant :
Code :
			var getEls = document.getElementsByTagName('DIV');
par :
Code :
			var getEls = document.getElementById('gallery').getElementsByTagName('div');
Sans ça, le code change TOUS les <div> de la page (dont ceux du mega-menu), et pas uniquement ceux du <div id="gallery">
__________________
"Ce qui se conçoit bien s'énonce clairement - Et les mots pour le dire arrivent aisément."
Nicolas Boileau-Despréaux, Homme de lettres français (1636-1711), principal théoricien de l'esthétique classique.
Site perso Mes tutos DVP : Gestion-Affichage de Nouvelles - Affichage en tableau HTML - Fonctions de redimensionnement d'images
jreaux62 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/09/2011, 10h06   #3
Invité de passage
 
Homme
Autre
Inscription : septembre 2011
Messages : 16
Détails du profil
Informations personnelles :
Sexe : Homme

Informations professionnelles :
Activité : Autre
Secteur : Arts - Culture

Informations forums :
Inscription : septembre 2011
Messages : 16
Points : 0
Points : 0
Merci de cette aide !
Je ne comprends pas... Ta solution marche... mais pas toujours ! De façon aléatoire cela marche sur une page, pas sur une autre, je reviens à la première ça marche, puis une autre ça ne marche plus...
Suis complètement paumé...

J'ai oublié de dire, mais je ne sais pas si c'est important, que les pages comportent également une carte flash qui fait office de menu...

Mais merci encore de d'être penché sur mon problème !
Patrice-83 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/09/2011, 10h09   #4
Rédacteur
 
Avatar de jreaux62
 
Homme Jérôme Réaux
Webdesigner
Inscription : août 2008
Messages : 2 993
Détails du profil
Informations personnelles :
Nom : Homme Jérôme Réaux
Âge : 45
Localisation : France, Pas de Calais (Nord Pas de Calais)

Informations professionnelles :
Activité : Webdesigner
Secteur : Arts - Culture

Informations forums :
Inscription : août 2008
Messages : 2 993
Points : 5 786
Points : 5 786
Envoyer un message via Skype™ à jreaux62
Vérifie que tu n'as pas plusieurs <div id="gallery"> dans les pages qui ne vont pas.
Je ne vois que ça.

[Edit] "gallery" est un mot très commun (qui pourrait être utilisé dans plusieurs scripts "génériques" et autres plugins "ready-to-use").
Essaie de le "personnaliser" -> <div id="tabs-gallery">
Ce qui suppose de faire cette modification PARTOUT où c'est nécessaire (CSS, script...).
__________________
"Ce qui se conçoit bien s'énonce clairement - Et les mots pour le dire arrivent aisément."
Nicolas Boileau-Despréaux, Homme de lettres français (1636-1711), principal théoricien de l'esthétique classique.
Site perso Mes tutos DVP : Gestion-Affichage de Nouvelles - Affichage en tableau HTML - Fonctions de redimensionnement d'images
jreaux62 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/09/2011, 10h21   #5
Invité de passage
 
Homme
Autre
Inscription : septembre 2011
Messages : 16
Détails du profil
Informations personnelles :
Sexe : Homme

Informations professionnelles :
Activité : Autre
Secteur : Arts - Culture

Informations forums :
Inscription : septembre 2011
Messages : 16
Points : 0
Points : 0
Je cherche, et je vous tiens au courant !
Patrice-83 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/09/2011, 10h22   #6
Invité de passage
 
Homme
Autre
Inscription : septembre 2011
Messages : 16
Détails du profil
Informations personnelles :
Sexe : Homme

Informations professionnelles :
Activité : Autre
Secteur : Arts - Culture

Informations forums :
Inscription : septembre 2011
Messages : 16
Points : 0
Points : 0
Par moments, la carte flash n'appraît plus sur la page... Et les tabs ne déclenchent plus le menu... mais ne fonctionnent pas...
Patrice-83 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/09/2011, 11h09   #7
Invité de passage
 
Homme
Autre
Inscription : septembre 2011
Messages : 16
Détails du profil
Informations personnelles :
Sexe : Homme

Informations professionnelles :
Activité : Autre
Secteur : Arts - Culture

Informations forums :
Inscription : septembre 2011
Messages : 16
Points : 0
Points : 0
Je n'ai bien qu'une seule id ou div "gallery"...
Patrice-83 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/09/2011, 11h27   #8
Rédacteur
 
Avatar de jreaux62
 
Homme Jérôme Réaux
Webdesigner
Inscription : août 2008
Messages : 2 993
Détails du profil
Informations personnelles :
Nom : Homme Jérôme Réaux
Âge : 45
Localisation : France, Pas de Calais (Nord Pas de Calais)

Informations professionnelles :
Activité : Webdesigner
Secteur : Arts - Culture

Informations forums :
Inscription : août 2008
Messages : 2 993
Points : 5 786
Points : 5 786
Envoyer un message via Skype™ à jreaux62
Dire "ca ne fonctionne pas" est insuffisant pour cibler le problème.

Si ca marche sur certaines pages et pas sur d'autres, compare-les :
  • cherche les différences (module/script/... en plus ou en moins) ;
  • ensuite, procède par dichotomie : enlève les "morceaux" les uns après les autres, pour détecter quel module/script/... peut créer le problème.
__________________
"Ce qui se conçoit bien s'énonce clairement - Et les mots pour le dire arrivent aisément."
Nicolas Boileau-Despréaux, Homme de lettres français (1636-1711), principal théoricien de l'esthétique classique.
Site perso Mes tutos DVP : Gestion-Affichage de Nouvelles - Affichage en tableau HTML - Fonctions de redimensionnement d'images
jreaux62 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/09/2011, 11h47   #9
Invité de passage
 
Homme
Autre
Inscription : septembre 2011
Messages : 16
Détails du profil
Informations personnelles :
Sexe : Homme

Informations professionnelles :
Activité : Autre
Secteur : Arts - Culture

Informations forums :
Inscription : septembre 2011
Messages : 16
Points : 0
Points : 0
J'étais justement en train d'isoler les éléments de la page.
Tout d'abord, lorsque une action se produit dans les tabs, la seconde apparaît sous la première, la troisième sous la seconde, etc... En fait, elles ne se referment plus lorsque j'ouvre la suivante...
Ensuite, il semble qu'il y ait également une interférence avec les scripts de pub Google...
Lorsqu'elles sont présentes, plus rien ne se passe. Lorsqu'il n'y en a pas, les tabs s'ouvrent avec le dysfonctionnement évoqué plus haut...

Mais pour compliquer les choses : cela c'est la situation sur mon ordi. Lorsque j'essaie en ligne, avec ou sans les pubs les tabs s'ouvrent, mais avec tjrs le même dysfonctionnement...

Simple, n'est-ce pas ? Enfin pour qqun comme moi qui ne connait que le html...
Patrice-83 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 18h54.


 
 
 
 
Partenaires

Hébergement Web