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 :

image aléatoire avec légende dans fichier externe


Sujet :

JavaScript

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 14
    Points : 6
    Points
    6
    Par défaut image aléatoire avec légende dans fichier externe
    Bonjour,
    utilisateur très occasionnel de javascript (non spécialiste, webmaster amateur, temps limité) je cherche à faire apparaitre à chaque chargement de la page d'accueil une image différente prise parmi une quinzaine de photos.
    Jusque là pas de problème, les scripts abondent.
    Mais je cherche à afficher en plus la légende et le nom de l'auteur de l'image.
    Et là je sèche, je coince...
    D'autant que l'idéal serait de piocher dans un fichier texte facile à modifier qui contiendrait :
    nomdelimage1.jpg, legende1, auteur1,
    nomdelimage2.jpg, legende2, auteur2,
    nomdelimage3.jpg, legende3, auteur3,
    etc.

    question 1 : est-ce que javascript peut le faire ? (oui je sais php le fait mais j'ai pas accès à du php)
    question 2 : si oui, comment faire ? :-)
    merci de vos pistes, tuyaux etc.
    David

  2. #2
    Modérateur
    Avatar de Bisûnûrs
    Profil pro
    Développeur Web
    Inscrit en
    Janvier 2004
    Messages
    9 868
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Janvier 2004
    Messages : 9 868
    Points : 16 258
    Points
    16 258
    Par défaut
    Tu peux t'aider de ça :

    http://developpez.net/forums/showthread.php?t=248686

    Grâce à la méthode 2 modifiée comme tel :
    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
     
    function randomImg(){
       var tabImg = new Array();
       tabImg[0]  = "image1.gif";
       tabImg[1]  = "image2.jpg";
       tabImg[2]  = "soleil.gif";
       tabImg[3]  = "poisson.jpg";
       tabImg[4]  = "neuneu.png";
     
       var tabLegend = new Array();
       tabLegend[0]  = "Description 1";
       tabLegend[1]  = "Description 2";
       tabLegend[2]  = "Description 3";
       tabLegend[3]  = "Description 4";
       tabLegend[4]  = "Description 5";
     
       var tabAuteur = new Array();
       tabAuteur[0]  = "Auteur 1";
       tabAuteur[1]  = "Auteur 2";
       tabAuteur[2]  = "Auteur 3";
       tabAuteur[3]  = "Auteur 4";
       tabAuteur[4]  = "Auteur 5";
     
       var n = Math.round(Math.random()*4);
     
       document.getElementById('image').src += tabImg[n];
       document.getElementById('legend').innerHTML = tabLegend[n];
       document.getElementById('auteur').innerHTML = tabAuteur[n];
    }

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 14
    Points : 6
    Points
    6
    Par défaut
    Ok, cela résoud mon problème d'association de l'image à l'auteur et à sa légende, un grand merci.
    Pas moyen de mettre le tableau en fichier externe ?
    David

  4. #4
    Modérateur
    Avatar de Bisûnûrs
    Profil pro
    Développeur Web
    Inscrit en
    Janvier 2004
    Messages
    9 868
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Janvier 2004
    Messages : 9 868
    Points : 16 258
    Points
    16 258
    Par défaut
    Si bien sûr. Qu'est-ce qui t'en empêche ?

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 14
    Points : 6
    Points
    6
    Par défaut
    Si bien sûr. Qu'est-ce qui t'en empêche ?
    Je me suis mal exprimé.
    Ce n'est pas moi qui saisit les références (nom du fichier, auteur, légende) et pour simplifier la mise à jour de l'ensemble, éviter les erreurs qui pourraient bousculer le code javascript, j'aimerais séparer le fichier javascript du fichier de données à appeler (donnees.txt par exemple) qui contiendrait le nom des images, des auteurs et des légendes.
    Je ne sais pas si je suis vraiment plus clair
    Merci en tout cas pour la rapidité de la réponse.
    David

  6. #6
    Modérateur
    Avatar de Bisûnûrs
    Profil pro
    Développeur Web
    Inscrit en
    Janvier 2004
    Messages
    9 868
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Janvier 2004
    Messages : 9 868
    Points : 16 258
    Points
    16 258
    Par défaut
    On ne peut malheureusement pas lire de fichier en Javascript qui permettrait de récupérer ces données. Dans ce cas-là il va falloir que tu passes par un langage serveur.

  7. #7
    Membre régulier
    Profil pro
    Inscrit en
    Juillet 2003
    Messages
    89
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2003
    Messages : 89
    Points : 102
    Points
    102
    Par défaut
    Citation Envoyé par Bisûnûrs Voir le message
    On ne peut malheureusement pas lire de fichier en Javascript qui permettrait de récupérer ces données. Dans ce cas-là il va falloir que tu passes par un langage serveur.
    Il pourrait faire un appel Ajax sur le fichier .txt hébergé sur son serveur. Le javascript le parse et y récupère les informations.
    Pas besoin de langage serveur... mais de bonnes connaissances javascript... !

    D'un autre coté, ce n'est pas la solution la plus simple et la plus fiable.
    Le mieux serait de renseigner un tableau javascript dans un fichier externe (fichier au format .js), au format JSON, qui pourrait ressembler à cela :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    var tabImage = {
    'image1.gif': {'legende': 'Description 1', 'auteur': 'Auteur 1'},
    'image2.gif': {'legende': 'Description 2', 'auteur': 'Auteur 2'}
    };
    (NB : pas de virgule à la dernière ligne de données !!!)

    Ainsi, tu peux récupérer la légende et l'auteur avec les lignes :
    tabImage['image1.gif'].legende
    et
    tabImage['image1.gif'].auteur

    Avantage non négligable de cette solution : le fichier externe .js est mis en cache par le navigateur. S'il contient pas mal de donnée, ce sera toujours ca de moins à télécharger du serveur à chaque changement de page

  8. #8
    Modérateur
    Avatar de Bisûnûrs
    Profil pro
    Développeur Web
    Inscrit en
    Janvier 2004
    Messages
    9 868
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Janvier 2004
    Messages : 9 868
    Points : 16 258
    Points
    16 258
    Par défaut
    Citation Envoyé par JulienC Voir le message
    Il pourrait faire un appel Ajax
    AJAX sans langage serveur ? Faudra m'expliquer là.

  9. #9
    Membre régulier
    Profil pro
    Inscrit en
    Juillet 2003
    Messages
    89
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2003
    Messages : 89
    Points : 102
    Points
    102
    Par défaut
    Citation Envoyé par Bisûnûrs Voir le message
    AJAX sans langage serveur ? Faudra m'expliquer là.
    Qu'est ce qui empêche le javascript d'appeler un fichier .txt ?
    Bien entendu, tout le fichier .txt sera récupérer (il n'y a bien sûr aucun traitement). C'est pour cela que j'ai indiqué qu'il faudra par la suite le parser.

  10. #10
    Futur Membre du Club
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 14
    Points : 6
    Points
    6
    Par défaut
    Il pourrait faire un appel Ajax sur le fichier .txt hébergé sur son serveur. Le javascript le parse et y récupère les informations.
    Pas besoin de langage serveur... mais de bonnes connaissances javascript... !
    C'est ce que j'avais subodoré en fouillant le net...
    J'ai trouvé une librairie ajax qui a l'air capable de faire ce que je cherche:
    http://www.dynamicdrive.com/dynamici...ajaxticker.htm
    Je n'ai pas creusé davantage mais pensez-vous qu'on puisse l'adapter pour des images ?
    Merci pour vos réponses
    David

  11. #11
    Futur Membre du Club
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 14
    Points : 6
    Points
    6
    Par défaut
    Citation Envoyé par Bisûnûrs Voir le message
    Tu peux t'aider de ça :

    http://developpez.net/forums/showthread.php?t=248686

    Grâce à la méthode 2 modifiée comme tel :
    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
     
    function randomImg(){
       var tabImg = new Array();
       tabImg[0]  = "image1.gif";
       tabImg[1]  = "image2.jpg";
       tabImg[2]  = "soleil.gif";
       tabImg[3]  = "poisson.jpg";
       tabImg[4]  = "neuneu.png";
     
       var tabLegend = new Array();
       tabLegend[0]  = "Description 1";
       tabLegend[1]  = "Description 2";
       tabLegend[2]  = "Description 3";
       tabLegend[3]  = "Description 4";
       tabLegend[4]  = "Description 5";
     
       var tabAuteur = new Array();
       tabAuteur[0]  = "Auteur 1";
       tabAuteur[1]  = "Auteur 2";
       tabAuteur[2]  = "Auteur 3";
       tabAuteur[3]  = "Auteur 4";
       tabAuteur[4]  = "Auteur 5";
     
       var n = Math.round(Math.random()*4);
     
       document.getElementById('image').src += tabImg[n];
       document.getElementById('legend').innerHTML = tabLegend[n];
       document.getElementById('auteur').innerHTML = tabAuteur[n];
    }
    J'ai fait une page avec ton code (encore merci), ça marche pas si je laisse le + dans l'avant-avant-dernière ligne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
       document.getElementById('image').src += tabImg[n];
    pas glop
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
       document.getElementById('image').src = tabImg[n];
    glop glop !
    Maintenant je suis bien incapable de comprendre/expliquer pourquoi ni de dire si c'est mieux comme ça
    Mille mercis
    David

  12. #12
    Futur Membre du Club
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 14
    Points : 6
    Points
    6
    Par défaut
    J'ai encore un souci :
    en local, tout est ok. Mais mon javascript s'insère en fait dans une page dans un système de publication en ligne (CMS) sur lequel je n'ai pas la main, et je ne peux pas notamment insérer de onload après la balise body.
    Du coup je coince : comment charger randomImg ?
    merci encore de votre patience.
    David

  13. #13
    Modérateur
    Avatar de Bisûnûrs
    Profil pro
    Développeur Web
    Inscrit en
    Janvier 2004
    Messages
    9 868
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Janvier 2004
    Messages : 9 868
    Points : 16 258
    Points
    16 258
    Par défaut
    Mets
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    window.onload = randomImg;
    dans ton script.

  14. #14
    Futur Membre du Club
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 14
    Points : 6
    Points
    6
    Par défaut
    Citation Envoyé par Bisûnûrs Voir le message
    Mets
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    window.onload = randomImg;
    dans ton script.
    Bon sang mais c'est bien sûr !
    Merci Bisûnûrs !
    David

  15. #15
    Futur Membre du Club
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 14
    Points : 6
    Points
    6
    Par défaut
    Citation Envoyé par JulienC Voir le message
    D'un autre coté, ce n'est pas la solution la plus simple et la plus fiable.
    Le mieux serait de renseigner un tableau javascript dans un fichier externe (fichier au format .js), au format JSON, qui pourrait ressembler à cela :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    var tabImage = {
    'image1.gif': {'legende': 'Description 1', 'auteur': 'Auteur 1'},
    'image2.gif': {'legende': 'Description 2', 'auteur': 'Auteur 2'}
    };
    (NB : pas de virgule à la dernière ligne de données !!!)

    Ainsi, tu peux récupérer la légende et l'auteur avec les lignes :
    tabImage['image1.gif'].legende
    et
    tabImage['image1.gif'].auteur

    Avantage non négligable de cette solution : le fichier externe .js est mis en cache par le navigateur. S'il contient pas mal de donnée, ce sera toujours ca de moins à télécharger du serveur à chaque changement de page

    Comment le premier code placé dans un fichier js va-t-il appeler le contenu du tableau lui même dans un js ?
    Désolé, je me sens vraiment nouille...
    Merci

  16. #16
    Membre régulier
    Profil pro
    Inscrit en
    Juillet 2003
    Messages
    89
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2003
    Messages : 89
    Points : 102
    Points
    102
    Par défaut
    Dans ton fichier HTML, tu peux faire appel à un fichier JS externe avec le code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <script type="text/javascript" src="..."></script>
    A partir de ce moment, le tableau sera connu et tu pourras le consulter normalement. Cela va donner :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    <script type="text/javascript" src="nom_fichier.js"></script>
    <script type="text/javascript">
    window.onload = function() {
       // Le code permettant d'afficher une image aléatoire
    }
    </script>

  17. #17
    Futur Membre du Club
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 14
    Points : 6
    Points
    6
    Par défaut
    Ok merci à tous pour vos réponse et votre réactivité, j'y suis arrivé.
    A+
    David

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

Discussions similaires

  1. Images avec légende dans un tableau
    Par zbahoui dans le forum Tableaux - Graphiques - Images - Flottants
    Réponses: 5
    Dernier message: 03/10/2013, 12h05
  2. Comment tracer une courbe chart avec valeurs dans fichier ?
    Par petitclem dans le forum C++Builder
    Réponses: 16
    Dernier message: 07/05/2008, 15h07
  3. Réponses: 2
    Dernier message: 03/07/2007, 23h48
  4. Petit script d'images aléatoires avec lien
    Par Syntax-ERROR dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 2
    Dernier message: 09/01/2007, 21h43
  5. Problème avec accent dans fichier
    Par shaun_the_sheep dans le forum Administration système
    Réponses: 3
    Dernier message: 19/11/2006, 20h46

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