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 25/11/2011, 16h30   #1
Invité régulier
 
Femme
Webdesigner
Inscription : avril 2008
Messages : 17
Détails du profil
Informations personnelles :
Sexe : Femme
Âge : 50
Localisation : France, Côtes d'Armor (Bretagne)

Informations professionnelles :
Activité : Webdesigner

Informations forums :
Inscription : avril 2008
Messages : 17
Points : 5
Points : 5
Par défaut un "onmouseout" après un "onclick"

Bonjour à tous !

J'ai un menu en accordéon qui lorsque l'on clique sur un des titres fait son job. Juste là, pas de souci. Par contre, si je mets ma souris hors de ce champ, le menu ne se referme pas.

Voici le code (car n'étant pas programmeuse, j'ai du mal); Si je change le "onclick" dans le script ci-dessous, cela ne m'arrange pas. En fait je souhaite garder le onclick pour ouvrir ce menu mais faire un "onmouseout" si ma souris s'en va. J'espère que j'ai été claire, merci de ne pas m'en vouloir.

D'avance, merci pour votre aide.


Canaille22



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
 
 var TINY={};
 
function T$(i){return document.getElementById(i)}
function T$$(e,p){return p.getElementsByTagName(e)}
 
TINY.accordion=function(){
	function slider(n){this.n=n; this.a=[]}
	slider.prototype.init=function(t,e,m,o,k){
		var a=T$(t), i=s=0, n=a.childNodes, l=n.length; this.s=k||0; this.m=m||0;
		for(i;i<l;i++){
			var v=n[i];
			if(v.nodeType!=3){
				this.a[s]={}; this.a[s].h=h=T$$(e,v)[0]; this.a[s].c=c=T$$('div',v)[0]; h.onclick=new Function(this.n+'.pr(0,'+s+')');
				if(o==s){h.className=this.s; c.style.height='auto'; c.d=1}else{c.style.height=0; c.d=-1} s++
			}
		}
		this.l=s
	};
	slider.prototype.pr=function(f,d){
		for(var i=0;i<this.l;i++){
			var h=this.a[i].h, c=this.a[i].c, k=c.style.height; k=k=='auto'?1:parseInt(k); clearInterval(c.t);
			if((k!=1&&c.d==-1)&&(f==1||i==d)){
				c.style.height=''; c.m=c.offsetHeight; c.style.height=k+'px'; c.d=1; h.className=this.s; su(c,1)
			}else if(k>0&&(f==-1||this.m||i==d)){
				c.d=-1; h.className=''; su(c,-1)
			}
		}
	};
	function su(c){c.t=setInterval(function(){sl(c)},20)};
	function sl(c){
		var h=c.offsetHeight, d=c.d==1?c.m-h:h; c.style.height=h+(Math.ceil(d/5)*c.d)+'px';
		c.style.opacity=h/c.m; c.style.filter='alpha(opacity='+h*100/c.m+')';
		if((c.d==1&&h>=c.m)||(c.d!=1&&h==1)){if(c.d==1){c.style.height='auto'} clearInterval(c.t)}
	};
	return{slider:slider}
}();
canaille22 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/11/2011, 10h44   #2
Expert Confirmé Sénior
 
Avatar de RomainVALERI
 
Homme Romain VALERI
POOête
Inscription : avril 2008
Messages : 2 582
Détails du profil
Informations personnelles :
Nom : Homme Romain VALERI
Âge : 35
Localisation : France, Meurthe et Moselle (Lorraine)

Informations professionnelles :
Activité : POOête

Informations forums :
Inscription : avril 2008
Messages : 2 582
Points : 4 088
Points : 4 088
Ben... c'est du code minifié (sauf indentation préservée, Dieu merci ^^)... tu es associée avec un cabinet d'ophtalmologie ou quoi ?

Plus sérieusement, ils n'ont pas une version étendue ?

edit : j'imagine que ça vient d'ici ? Sinon, on peut voir comment tu appelles la fonction accordion (pour les paramètres) ?
__________________

...pour les linguistes et les curieux >>> générateur de phrases aléatoires

__________________
RomainVALERI est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/11/2011, 14h53   #3
Invité régulier
 
Femme
Webdesigner
Inscription : avril 2008
Messages : 17
Détails du profil
Informations personnelles :
Sexe : Femme
Âge : 50
Localisation : France, Côtes d'Armor (Bretagne)

Informations professionnelles :
Activité : Webdesigner

Informations forums :
Inscription : avril 2008
Messages : 17
Points : 5
Points : 5
Par défaut appel de la fonction

Bonjour Romain

Voilà l'appel de la fonction :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
 
<script type="text/javascript" src="menus/particulier/particulier1etoile.js"></script>
 
<script type="text/javascript">
 
var parentAccordion=new TINY.accordion.slider("parentAccordion");
parentAccordion.init("acc","h3",0,0);
 
var nestedAccordion=new TINY.accordion.slider("nestedAccordion");
nestedAccordion.init("nested","h3",1,-1,"acc-selected");
 
</script>

S'il te manque quelque chose, dis-le moi.

Merci beaucoup


Canaille22
canaille22 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/11/2011, 20h19   #4
Modérateur
 
Avatar de NoSmoking
 
Homme
Inscription : janvier 2011
Messages : 2 944
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Isère (Rhône Alpes)

Informations forums :
Inscription : janvier 2011
Messages : 2 944
Points : 4 776
Points : 4 776
Bonsoir,
Citation:
Si je change le "onclick" dans le script ci-dessous, cela ne m'arrange pas. En fait je souhaite garder le onclick pour ouvrir ce menu mais faire un "onmouseout" si ma souris s'en va.
l'ergonomie sera pour le moins déroutante, autant gérer le mouseover et le mouseout et même là j'ai peur que certains cycles se montent dessus.

Citation:
Si je change le "onclick" dans le script ci-dessous, cela ne m'arrange pas.
récupéres la ligne du onclick et mets la même en onmouseout, c'est celle là
Code :
h.onclick=new Function(this.n+'.pr(0,'+s+')');
mais <edit>pas</edit> convaincu du résultat.
NoSmoking est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/11/2011, 20h25   #5
Expert Confirmé Sénior
 
Avatar de RomainVALERI
 
Homme Romain VALERI
POOête
Inscription : avril 2008
Messages : 2 582
Détails du profil
Informations personnelles :
Nom : Homme Romain VALERI
Âge : 35
Localisation : France, Meurthe et Moselle (Lorraine)

Informations professionnelles :
Activité : POOête

Informations forums :
Inscription : avril 2008
Messages : 2 582
Points : 4 088
Points : 4 088
Tu voulais pas dire
Citation:
Envoyé par NoSmoking Voir le message
mais !convaincu du résultat.
par hasard ?
__________________

...pour les linguistes et les curieux >>> générateur de phrases aléatoires

__________________
RomainVALERI est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/11/2011, 20h34   #6
Modérateur
 
Avatar de NoSmoking
 
Homme
Inscription : janvier 2011
Messages : 2 944
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Isère (Rhône Alpes)

Informations forums :
Inscription : janvier 2011
Messages : 2 944
Points : 4 776
Points : 4 776
Citation:
Tu voulais pas dire Citation:
Envoyé par NoSmoking
mais !convaincu du résultat.

par hasard ?
tout à fait, <edit> fait, merci
NoSmoking est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/11/2011, 05h39   #7
Invité régulier
 
Femme
Webdesigner
Inscription : avril 2008
Messages : 17
Détails du profil
Informations personnelles :
Sexe : Femme
Âge : 50
Localisation : France, Côtes d'Armor (Bretagne)

Informations professionnelles :
Activité : Webdesigner

Informations forums :
Inscription : avril 2008
Messages : 17
Points : 5
Points : 5
Par défaut Pour "NO SMOKING"

Merci no smoking. En mettant à la suite mon "onmouseout" après le "onclick", ça déconnait un peu aussi je l'ai mis là :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
 
 
slider.prototype.pr=function(f,d){
		for(var i=0;i<this.l;i++){
			var h=this.a[i].h, c=this.a[i].c, k=c.style.height; k=k=='auto'?1:parseInt(k); clearInterval(c.t);
			if((k!=1&&c.d==-1)&&(f==1||i==d)){
				c.style.height=''; c.m=c.offsetHeight; c.style.height=k+'px'; c.d=1;h.onmouseout=new Function(this.n+'.pr(0,'+s+')'); h.className=this.s; su(c,1)
			}else if(k>0&&(f==-1||this.m||i==d)){
				c.d=-1; h.className=''; su(c,-1)
			}
		}
	};

Et ça marche du tonnerre parce qu'en fait j'ai 4 titres de menu en accordéon. Pour un, cela aurait été mais avec 4, ça n'allait pas.

Par contre, je suis peut-être neuneu, mais le <edit> je le mets où ? Parce que je n'ai pas cette fonction dans mes pages.

Merci en tous les cas pour tout.

Bises


Canaille22
canaille22 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/11/2011, 05h40   #8
Invité régulier
 
Femme
Webdesigner
Inscription : avril 2008
Messages : 17
Détails du profil
Informations personnelles :
Sexe : Femme
Âge : 50
Localisation : France, Côtes d'Armor (Bretagne)

Informations professionnelles :
Activité : Webdesigner

Informations forums :
Inscription : avril 2008
Messages : 17
Points : 5
Points : 5
Par défaut pour Romain

Merci Romain pour ton aide.

Bises


Canaille22
canaille22 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 07h27.


 
 
 
 
Partenaires

Hébergement Web