11521 sujets

JavaScript, DOM et API Web HTML5

Bonjour,
N'étant pas experte en js, je cale pour modifier un script dans le footer d'un site.
Il y a 2 séries de logo, côte à côte. Une série représente des administrations, l'autre des groupes de travail.
Un script js les fait s'afficher en alternance.
Mon problème : il ne faut pas que les 2 séries alternent en même temps, que les logos de droite et de gauche s'affichent en même temps.
Je n'arrive pas à modifier mon script pour cela, auriez-vous une piste SVP ? Est-ce que je dois faire 2 scripts différents ?
Merci par avance. Mon script ci-dessous.
Evelyne31

var i=0; //indice première image
var j=0;

var logosAdmin = [ 
	'Accueil/Images/logoAdmin/xxx_1.png',
	'Accueil/Images/logoAdmin/xxx_1.png',
	'Accueil/Images/logoAdmin/xxx_3.png',
	'Accueil/Images/logoAdmin/xxx_4.png',
	'Accueil/Images/logoAdmin/xxx_5.png',
];

var logosGroupes = [ 
	'Accueil/Images/logoGroupes/zzz_1.png',
	'Accueil/Images/logoGroupes/zzz_2.png',
	'Accueil/Images/logoGroupes/zzz_3.png',
	'Accueil/Images/logoGroupes/zzz_4.png',
	'Accueil/Images/logoGroupes/zzz_5.png',
];

var $logo_bottom1 = $("#logo_admin"); //définition de la balise des administrations
var $logo_bottom2 = $("#logo_groupes"); //définition de la balise des unités mixtes de recherche

function changeLogo(){
	$logo_bottom1.fadeOut(1000), 
	window.setTimeout(function(){$logo_bottom1.attr("src",logosadmin[i]).fadeIn(1000);},1000);
	if(i<logosAdmin.length-1){i++;} else{i=0;} //retour première image
	
	$logo_bottom2.fadeOut(1000), 
	window.setTimeout(function(){$logo_bottom2.attr("src",logosgroupes[j]).fadeIn(1000);},1000);
	if(j<logosGroupes.length-1){j++;} else{j=0;} //retour première image
	
	window.setTimeout(function(){changeLogo();},6000); //temps entre deux apparitions
}
window.onload = function(){window.setTimeout(function(){changeLogo();},5000);}

[/i]
Bonjour !

Je ne pense pas que je puisse vous aider mais j'ai déjà du mal à comprendre le problème...

Peut-être avec une image...

Qui sait ? D'autres pourraient être plus inspirés...

Smiley smile
Bonjour,

Si j'ai bien suivi, tu tentes donc d'afficher en alternance un logo, une fois à gauche de ton footer, une fois à droite. Et tu as donc créé 2 images, qu'un script vient modifier en alternance.

Personnellement, je ferais un petit peu différemment. Si j'ai bien compris, il n'y a toujours qu'un seul logo affiché en même temps, donc je ne ferai qu'un seule image, et donc un seul Array avec la liste des logos, en alternant un logo admin et un logo group (admin index pair par ex, group index impair).

Ta fonction qui fait défiler devient unique, un simple SetInterval par ex. exécutera les actions suivantes :
- FadeOut pour masquer l'image
- Modification du src de l'image (l'index de l'image à afficher est dans une variable globale, ou dans un attribut de ton image, genre data-index="0")
- Ajout/Suppresion d'une classe à ton objet Image : addClass('logo-impair') par ex.
- Fadein pour afficher l'image

Tu n'as plus qu'à jouer avec ta .css :
L'image est positionnée à gauche par défaut.
Lorsque la classe 'logo-impair' est ajoutée, l'image est positionnée à droite.

Et voilà : tes logos alternent (source et position) sans jamais pouvoir apparaitre en même temps Smiley smile

Manu.
Bonjour ManuB28,
En fait, j'ai procédé différemment en faisant varier à des vitesses différentes les 2 séries (fadeOut et fadeIn). Mais, il arrive encore que des logos s'affichent en même temps.
Je vais donc tester avec intérêt ta solution et reviendrais mettre "résolu" très vite j'espère.
Merci également à Zelena pour sa réponse.
Très bonne fin de journée,
Evelyne
Bonjour ManuB28,
Je reviens un peu tard mais grâce à toi je peux mettre ce sujet en "résolu".
Ma solution n'était pas très esthétique. J'ai donc repris selon tes conseils : je n'ai pas modifié mon js en laissant tourner les 2 séries de logos à la même vitesse mais je suis intervenue sur le css pour faire afficher une série de logos à droite du footer et l'autre à gauche.
C'est super comme ça, je te remercie beaucoup.
Evelyne31