IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

JavaScript Discussion :

plusieurs diaporamas différents dans plusieurs pages


Sujet :

JavaScript

  1. #1
    Mut
    Mut est déconnecté
    Membre averti Avatar de Mut
    Homme Profil pro
    Inscrit en
    Mars 2003
    Messages
    931
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations forums :
    Inscription : Mars 2003
    Messages : 931
    Points : 307
    Points
    307
    Par défaut plusieurs diaporamas différents dans plusieurs pages
    Bonsoir,

    Je souhaite afficher dans plusieurs pages, plusieurs diaporamas avec des photos différentes.

    J'ai donc

    - une "Page1" avec deux rubriques
    - Une "page2" avec deux rubriques


    Je souhaite pouvoir afficher dans chaques rubriques un diaporama avec des photos différentes.


    J'ai récupérer ceci et essayer de le travailler mais sans succés :

    fichier "script" :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
     
    var slideShowSpeed = 4000
     
    var crossFadeDuration = 3
     
    var Pic = new Array()
     
    Pic[0] = 'images/accueil/image1.jpg'
     
    Pic[1] = 'images/accueil/image2.jpg'
     
    Pic[2] = 'images/accueil/image3.jpg'
     
    var t
     
    var j = 0
     
    var p = Pic.length
     
    var preLoad = new Array()
     
    for (i = 0; i < p; i++){
     
    preLoad[i] = new Image()
     
    preLoad[i].src = Pic[i]
     
    }
     
    function runSlideShow(){
     
    if (document.all){
     
    document.images.SlideShow.style.filter="blendTrans(duration=2)"
     
    document.images.SlideShow.style.filter="blendTrans(duration=crossFadeDuration)"
     
    document.images.SlideShow.filters.blendTrans.Apply() 
     
    }
     
    document.images.SlideShow.src = preLoad[j].src
     
    if (document.all){
     
    document.images.SlideShow.filters.blendTrans.Play()
     
    }
     
    j = j + 1
     
    if (j > (p-1)) j=0
     
    t = setTimeout('runSlideShow()', slideShowSpeed)
     
    }
    body de chaque page :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <body onload="runSlideShow()">
    Il faudrait donc que le mot "accueil" change suivant la page et la rubrique afin que le bon diaporama s'affiche dans chaque rubrique...

    Si quelqu'un a une solution....

    Merci !

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonjour,
    où est le problème ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    function runSlideShow(repimg) {
    	var repimg;
    	// [...]
    	Pic[0] = repimg+'/image1.jpg'
    	Pic[1] = repimg+'/image2.jpg'
    	Pic[2] = repimg+'/image3.jpg'
    	// [...]
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <body onload="runSlideShow('images/accueil')">

  3. #3
    Mut
    Mut est déconnecté
    Membre averti Avatar de Mut
    Homme Profil pro
    Inscrit en
    Mars 2003
    Messages
    931
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations forums :
    Inscription : Mars 2003
    Messages : 931
    Points : 307
    Points
    307
    Par défaut
    Le problème c'est que l'image ne change plus car je pense que le dernier appel de la fonction n'est pas bon :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
     
     
    var slideShowSpeed = 4000
     
    var crossFadeDuration = 3
     
    var Pic = new Array()
     
    var t
    var j = 0
     
    function runSlideShow(repimg){
     
    //var repimg;
     
     
     
    Pic[0] = repimg+'/image1.jpg'
     
    Pic[1] = repimg+'/image2.jpg'
     
    Pic[2] = repimg+'/image3.jpg'
     
     
     
    var p = Pic.length
     
    var preLoad = new Array()
     
    for (i = 0; i < p; i++){
     
    preLoad[i] = new Image()
     
    preLoad[i].src = Pic[i]
     
    }
    if (document.all){
     
    document.images.SlideShow.style.filter="blendTrans(duration=2)"
     
    document.images.SlideShow.style.filter="blendTrans(duration=crossFadeDuration)"
     
    document.images.SlideShow.filters.blendTrans.Apply() 
     
    }
     
    document.images.SlideShow.src = preLoad[j].src
     
    if (document.all){
     
    document.images.SlideShow.filters.blendTrans.Play()
     
    }
     
    j = j + 1
     
    if (j > (p-1)) j=0
     
    t = setTimeout("runSlideShow('"repimg"')", slideShowSpeed)
     
    }
    j'appelle la fonction comme ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <body onload="runSlideShow('images/accueil')">
    et l'insertion de l'image se fait ainsi :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <img src="images/accueil/image1.jpg" name="SlideShow" width="400" height="350" alt="Exemples" style="float:left;border:0;margin: 1em 1em 0 0;">
    Si j'enlève la variable repimg dans le dernier appel de la fonction, ça défile mais sans les images....

  4. #4
    Mut
    Mut est déconnecté
    Membre averti Avatar de Mut
    Homme Profil pro
    Inscrit en
    Mars 2003
    Messages
    931
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations forums :
    Inscription : Mars 2003
    Messages : 931
    Points : 307
    Points
    307
    Par défaut
    Mince....j'avais juste oublié les + + autour de la variable....


    Merci beaucoup

  5. #5
    Mut
    Mut est déconnecté
    Membre averti Avatar de Mut
    Homme Profil pro
    Inscrit en
    Mars 2003
    Messages
    931
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations forums :
    Inscription : Mars 2003
    Messages : 931
    Points : 307
    Points
    307
    Par défaut
    Bonjour,

    Je reviens sur ce sujet car en fait il est en partie résolu. J'ai oublié un paramètre qui ne fonctionne pas. Le code ci-dessus fonctionne bien et permet de changer de chemin sur chaques différentes pages. Mon problème est que je souhaiterais également pouvoir personnaliser l'affichage des diapos sur une meme page. C'est à dire, pouvoir avoir deux diapos sur une même page affichant chacun une série d'images différentes....



    Merci

  6. #6
    Invité
    Invité(e)
    Par défaut
    Ce n'est pas si compliqué :
    <img src="images/accueil/image1.jpg" name="SlideShow1" width="400" height="350" alt="Exemples" style="float:left;border:0;margin: 1em 1em 0 0;">
    <img src="images/autredossier/image1.jpg" name="SlideShow2" width="400" height="350" alt="Exemples" style="float:left;border:0;margin: 1em 1em 0 0;">
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <body onload="runSlideShow('images/accueil','SlideShow1'); runSlideShow('images/autredossier','SlideShow2');">
    et la fonction :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    function runSlideShow(repimg,slidename) {
    	var repimg; // rep des images
    	var slidename; // name de l image
     
    	// ET REMPLACER partout :
    	// document.images.SlideShow.
    	// par (je crois) :
    	document.images.[slidename].

  7. #7
    Mut
    Mut est déconnecté
    Membre averti Avatar de Mut
    Homme Profil pro
    Inscrit en
    Mars 2003
    Messages
    931
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations forums :
    Inscription : Mars 2003
    Messages : 931
    Points : 307
    Points
    307
    Par défaut
    Les diapos ne défilent plus avec ce code :

    fichier script :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
     
    var slideShowSpeed = 4000
     
    var crossFadeDuration = 3
     
    var Pic = new Array()
     
    var t
    var j = 0
     
    function runSlideShow(repimg,slidename){
     
    var slidename;
    var repimg;
     
    alert (slidename);
    Pic[0] = repimg+'/image1.jpg'
     
    Pic[1] = repimg+'/image2.jpg'
     
    Pic[2] = repimg+'/image3.jpg'
     
    if (repimg=="images/accueil") {
    Pic[3] = repimg+'/image4.jpg'
    }
     
    var p = Pic.length
     
    var preLoad = new Array()
     
    for (i = 0; i < p; i++){
     
    preLoad[i] = new Image()
    preLoad[i].src = Pic[i]
     
    }
    if (document.all){
     
    document.images.[slidename].style.filter="blendTrans(duration=2)"
    	document.images.[slidename].style.filter="blendTrans(duration=crossFadeDuration)"
    	document.images.[slidename].filters.blendTrans.Apply() 
     
    }
     
    	document.images.[slidename].src = preLoad[j].src
     
    if (document.all){
     
    	document.images.[slidename].filters.blendTrans.Play()
     
    }
     
    j = j + 1
     
    if (j > (p-1)) j=0
     
    t = setTimeout("runSlideShow('"+repimg+"','"+slidename+"')", slideShowSpeed)
     
    }
    Page html

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
     
    <body onload="runSlideShow('images/test','SlideShow1');runSlideShow('images/accueil','SlideShow2')" >
    a l'endroit du premier diapo :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <img src="images/test/image1.jpg" name="SlideShow2" width="400" height="350" alt="Exemples" style="float:left;border:0;margin: 1em 1em 0 0;" >
    a l'endroit du 2e diapo :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <img src="images/accueil/image1.jpg" name="SlideShow1" width="400" height="350" alt="Exemples" style="float:left;border:0;margin: 1em 1em 0 0;">

    Les images restent figées. J'ai essayé de conroler la variable slidename mais le "alert" ne me renvoit rien dans la fonction. L'"alert" n'est meme pas affiché....

  8. #8
    Invité
    Invité(e)
    Par défaut
    J'avais fait une erreur (que tu aurais pu voir !!)
    // ET REMPLACER partout :
    // document.images.SlideShow.
    // par (je crois) :
    document.images.[slidename].
    document.images.[slidename] -> document.images[slidename]

    J'ai ajouté des ; en fin d'instructions et déclaré Pic (var Pic = new Array(); )
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    <script type="text/javascript">
    var slideShowSpeed = 4000;
    var crossFadeDuration = 3;
    var t;
    var j = 0;
     
    function runSlideShow(repimg,slidename){
     
    	var slidename;
    	var repimg;
     
    	var Pic =  new Array();
    	Pic[0] = repimg+'/image1.jpg';
    	Pic[1] = repimg+'/image2.jpg';
    	Pic[2] = repimg+'/image3.jpg';
    	if (repimg=="images/accueil") {
    		Pic[3] = repimg+'/image4.jpg';
    	}
     
    	var p = Pic.length;
    	var preLoad = new Array();
     
    	for (i = 0; i < p; i++){
    		preLoad[i] = new Image();
    		preLoad[i].src = Pic[i];
    	}
    	if (document.all){
    		document.images[slidename].style.filter="blendTrans(duration=2)";
    		document.images[slidename].style.filter="blendTrans(duration=crossFadeDuration)";
    		document.images[slidename].filters.blendTrans.Apply();
    	}
    	document.images[slidename].src = preLoad[j].src;
     
    	if (document.all){
    		document.images[slidename].filters.blendTrans.Play();
    	}
     
    	j = j + 1;
    	if (j > (p-1)) j=0;
     
    	t = setTimeout("runSlideShow('"+repimg+"','"+slidename+"')", slideShowSpeed);
    }
    </script>
    ps : un code bien indenté est plus facile à lire, et à déboguer.
    Dernière modification par Invité ; 15/09/2011 à 09h19.

  9. #9
    Mut
    Mut est déconnecté
    Membre averti Avatar de Mut
    Homme Profil pro
    Inscrit en
    Mars 2003
    Messages
    931
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations forums :
    Inscription : Mars 2003
    Messages : 931
    Points : 307
    Points
    307
    Par défaut
    Impec merci pour les infos ! mon tableau "pic" était bien déclaré mais effectivement, le slideshow était mal interprété.

    Il me reste à gérer le décalage des indices car "i" sert pour les deux diapos donc la fonction parcours deux tableaux différentx avec le meme indice et donc le diapo affiche une image sur deux...


    En tout cas merci ce résultat est déjà pas mal !

  10. #10
    Membre chevronné

    Homme Profil pro
    Ingénieur Hospitalier
    Inscrit en
    Juillet 2004
    Messages
    993
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur Hospitalier
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2004
    Messages : 993
    Points : 1 768
    Points
    1 768
    Billets dans le blog
    1
    Par défaut
    Il me reste à gérer le décalage des indices car "i" sert pour les deux diapos donc la fonction parcours deux tableaux différentx avec le meme indice et donc le diapo affiche une image sur deux...
    Peut être un concat des tableaux?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    var a=new Array('a','b','c');
    var b=new Array('d','e','f');
    var c=a.concat(b);

  11. #11
    Invité
    Invité(e)
    Par défaut
    Bonjour,
    Il NE faut PAS déclarer "var Pic = new Array();" AVANT la fonction,
    mais il faut le déclarer DANS LA FONCTION.
    - enlever du début (avant la fonction)
    - et le mettre DANS la fonction
    Sinon, Pic est "variable globale" au lieu d'être "variable locale à la fonction".

  12. #12
    Mut
    Mut est déconnecté
    Membre averti Avatar de Mut
    Homme Profil pro
    Inscrit en
    Mars 2003
    Messages
    931
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations forums :
    Inscription : Mars 2003
    Messages : 931
    Points : 307
    Points
    307
    Par défaut
    Effectivement, merci beaucoup le tableau était déclaré hors de la fonction. Ca fonctionne très bien maintenant. Il me reste un petit soucis lorsque le dimensionnement du tableau n'est pas le même pour les deux diapos. Il y en a un qui s'arrête de défiler (celui qui à le moins d'image) alors que l'autre boucle bien en continu. Il faudrait donc que celui qui à le moins d'images boucle également au lieu de s'arrêter. J'ai enlever la partie suivante pour voir si le problème venait bien de la :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
     
    if (repimg=="images/accueil") {
    Pic[3] = repimg+'/image4.jpg';
    }
    et effectivement, sans cette condition, les deux diapos bouclent bien en continu, mais je ne peux donc pas personnaliser le nombre d'image de chaque diapos....

    Il n'y a plus que l'indice "j" de déclaré en global

  13. #13
    Invité
    Invité(e)
    Par défaut
    Bonjour,
    mets toutes les variables dans la fonction :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    function runSlideShow(repimg,slidename){
    	var slideShowSpeed = 4000;
    	var crossFadeDuration = 3;
    	var t;
    	var j = 0;

  14. #14
    Mut
    Mut est déconnecté
    Membre averti Avatar de Mut
    Homme Profil pro
    Inscrit en
    Mars 2003
    Messages
    931
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations forums :
    Inscription : Mars 2003
    Messages : 931
    Points : 307
    Points
    307
    Par défaut
    Oui j'avais essayé mais, alors si je mets "j", les images ne changent plus...tout le reste est dedans.

    Si "j" est en dehors, les deux diapos défilent bien toutes leurs images mais le premier (qui à une image de moins par rapport au deuxième) s'arrete, le deuxième continu, puis la boucle repart sauf pour le premier qui reste "bloqué"...

  15. #15
    Invité
    Invité(e)
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    <!DOCTYPE html>
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    	<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    	<title>test</title>
    	<script type="text/javascript">
    	function runSlideShow(repimg,slidename,j){
    		var slidename;
    		var repimg;
     
    		var slideShowSpeed = 4000;
    		var crossFadeDuration = 3;
    		var t;
    		var j = Number(j);
     
    		var Pic =  new Array();
    		Pic[0] = repimg+'/image1.jpg';
    		Pic[1] = repimg+'/image2.jpg';
    		Pic[2] = repimg+'/image3.jpg';
    		if (repimg=="images/accueil") {
    			Pic[3] = repimg+'/image4.jpg';
    			Pic[4] = repimg+'/image5.jpg';
    		}
     
    		var p = Pic.length;
    		var preLoad = new Array();
     
    		for (i = 0; i < p; i++){
    			preLoad[i] = new Image();
    			preLoad[i].src = Pic[i];
    		}
    		if (document.all){
    			document.images[slidename].style.filter="blendTrans(duration=2)";
    			document.images[slidename].style.filter="blendTrans(duration=crossFadeDuration)";
    			document.images[slidename].filters.blendTrans.Apply();
    		}
    		document.images[slidename].src = preLoad[j].src;
     
    		if (document.all){
    			document.images[slidename].filters.blendTrans.Play();
    		}
     
    		j = j + 1;
    		if (j > (p-1)) j=0;
     
    		t = setTimeout("runSlideShow('"+repimg+"','"+slidename+"',"+j+")", slideShowSpeed);
    	}
    	</script>
     
    </head>
    <body onload="runSlideShow('images/accueil','SlideShow1',0); runSlideShow('images/test','SlideShow2',0);">
     
    <div id="box1">
    	<p>diaporama 1</p>
    	<img src="img-diapoD/image1.jpg" name="SlideShow1" width="400" height="350" alt="Exemples 1" style="xxfloat:left; border:0; margin: 1em 1em 0 0;" >
    </div>
    <div id="box2">
    	<p>diaporama 2</p>
    	<img src="images/test/image1.jpg" name="SlideShow2" width="400" height="350" alt="Exemples 2" style="xxfloat:left; border:0; margin: 1em 1em 0 0;" >
    </div>
     
    </body>
    </html>
    ps : il existe de très bons sliders jQuery, comme CrossSlide, ...

  16. #16
    Mut
    Mut est déconnecté
    Membre averti Avatar de Mut
    Homme Profil pro
    Inscrit en
    Mars 2003
    Messages
    931
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations forums :
    Inscription : Mars 2003
    Messages : 931
    Points : 307
    Points
    307
    Par défaut
    C'est vraiment parfait !!

    Je vais étudier ton lien

    Un grand merci!

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 6
    Dernier message: 24/01/2023, 12h12
  2. Variables différentes dans plusieurs modules VBA
    Par soeursourire dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 28/11/2008, 13h45
  3. Stocker des données dans plusieurs matrices différentes
    Par setsuko974 dans le forum Langage
    Réponses: 6
    Dernier message: 23/03/2007, 23h48
  4. [HTML] Ouvrir plusieurs fichiers pdf dans une page
    Par PrinceMaster77 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 5
    Dernier message: 05/05/2006, 09h34
  5. utiliser plusieurs police différentes dans 1 mémo
    Par the_magik_mushroom dans le forum Composants VCL
    Réponses: 5
    Dernier message: 08/03/2006, 16h28

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo