Bonjour

J'utilise la galerie photos en javascript ET le menu déroulant vertical CSS + JS sur la même page.

Quand je les utilise séparément ils fonctionnent bien tous les 2.
Quand je les utilise ensemble ils ont des comportements bizarres.

Quand je met le script du menu en premier dans le [i]<head>[/b]
Le menu s'affiche avec les sous-menus déroulés à l'ouverture de la page, et il faut cliquer sur un menu pour que ses sous-menus se déroule et que les autres rentrent.
La galerie, elle, fonctionne bien...

Quand je met le script de la galerie en premier dans le <head>
Le menu fonctionne bien.
La galerie affiche l'image en grand format, mais dans une autre page ...

Si vous avez une idée de ce qu'il faut modifier, cela m'aiderait bien.

Merci
[/b]
Modérateur
Salut,

Les deux scripts utilisent window.onload tous les deux, ce qui n'est pas possible... (principe de la gestion des événements en DOM 0)

Ce que tu peux faire, c'est virer les deux instructions window.onload = montre; et window.onload = displayPics; puis ajouter :

(gestion des événements en DOM 2)
function connect(oElem, sEvType, fn, bCapture)
{
	return document.addEventListener ?
		oElem.addEventListener(sEvType, fn, bCapture):
		oElem.attachEvent ?
			oElem.attachEvent('on' + sEvType, fn):
			false;
}

connect(window, 'load', montre, false);
connect(window, 'load', displayPics, false);
Salut,

rien compris comment ça marche Smiley decu

Mais je viens de piller le script sans la moindre vergogne et en toute discrétion Smiley langue

Je vous le dis moi, je finirai en prison ! Smiley lol


merci Koala Smiley cligne
Modifié par Christian Le Bouler (11 Jul 2007 - 20:00)
Modérateur
hello,

Christian Le Bouler a écrit :
rien compris comment ça marche Smiley decu
Qu'est-ce que tu n'as pas compris ? Smiley sweatdrop

La syntaxe de la fonction connect ?

C'est équivalent à ceci :
function connect(oElem, sEvType, fn, bCapture)
{
	if(document.addEventListener)                        // W3C compliant
		return oElem.addEventListener(sEvType, fn, bCapture);
	else if(oElem.attachEvent)                           // IE
		return oElem.attachEvent('on' + sEvType, fn);
	else                                                 // others
		return false;
}

Pour ce qui est de addEventListener (W3C) et attachEvent (IE), je te conseille de lire (ou relire) les tutos Gilles et Julien. Ce sera plus complet que les explications que je pourrais te donner là. Smiley cligne
Modifié par koala64 (12 Jul 2007 - 16:00)
koala64 a écrit :
hello,

Qu'est-ce que tu n'as pas compris ? Smiley sweatdrop

La syntaxe de la fonction connect ?



Je n'ai rien compris...

Je ne comprend pas :
oElem, sEvType, fn, bCapture

ça m'énerve, tant que c'est du php je comprend bien, et dès que c'est javascript ce n'est que de la formule magique.

Et encore, t'as pas mis un "00oo__oo00^^00oo__oo00"
Modifié par Christian Le Bouler (12 Jul 2007 - 21:54)
Modérateur
Ah... oui... bon dac... Smiley ravi

Alors, tout ça, c'est les paramètres implicites de la fonction connect. On appelle ça arguments lorsqu'on a affaire aux paramètres explicites (window, 'load', displayPics et false)

Généralement, pour un paramètre (équivalent à une variable), j'indique le type (en minuscule) puis ce que c'est.

Autrement dit,

oElem est un élément - variable de type object (ex.: window, document, etc...)
sEvType est le type d'événement - variable de type string (ex.: 'load', 'click', 'mouseover', 'focus', etc...)
fn est la fonction/méthode utilisée - variable de type function (ex.: montre, displayPics, etc...)
bcapture ne sert qu'à addEventListener -> c'est le mode de propagation de l'événement (capture ou... effervescence) - variable de type booléenne (true ou false)

Nota : IE ne comprend que l'effervescence ce qui fait que dans un soucis de compatibilité (et pour avoir un comportement similaire), on met quasimment toujours false.

... et quand je met un oO.fonction, ça veut dire que fonction est une méthode de l'objet oO. Pourquoi ?
Parce que quand tu crées une fonction connect, en réalité, c'est comme écrire window.connect -> connect est une méthode de l'objet window. Lorsque tu multiplies les scripts, il se peut, à un moment donné, que certaines variables et fonctions portent le même nom, ce qui aboutit à un conflit. Je crée donc mon propre objet et insère chaque fonction/variable est tant que méthode/propriété de celui-ci. J'évite, du même coup, toute variable globale.
Modifié par koala64 (13 Jul 2007 - 00:41)