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

HTML Discussion :

Création liste déroulante + affichage image en fonction de la sélection


Sujet :

HTML

  1. #1
    Membre du Club
    Homme Profil pro
    Intérimaire
    Inscrit en
    Mai 2017
    Messages
    91
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Intérimaire

    Informations forums :
    Inscription : Mai 2017
    Messages : 91
    Points : 60
    Points
    60
    Par défaut Création liste déroulante + affichage image en fonction de la sélection
    Bonjour à tous,

    je cale sur la réalisation d'une liste déroulante. en effet j'ai des graph qui sont générés automatiquement et j'aimerais créer une liste déroulant dynamique en html avec en choix l'année et le mois

    voici le code HTML :

    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
     
     
    <!DOCTYPE html>
    <html>
      <head>
        <meta charset="utf-8">
        <meta name="viewport" content="width=device-width">
        <title>repl.it</title>
        <link href="index.css" rel="stylesheet" type="text/css" />
        <script src="index.js"></script>
      </head>
      <body>
    <div id="liste">      
        <select onchange="javascript:affichage(this);" id="mois">
            <option> tous</option> <!-- Toute l'année -->
            <option> janv</option>
            <option> fev</option>
            <option> mar</option>
            <option> avr</option>
            <option> mai</option>
            <option> juin</option>
            <option> juil</option>
            <option> aout</option>
            <option> sept</option>
            <option> oct</option>
            <option> nov</option>
            <option> dec</option>
        </select>
        <select id="année">
            <option>2017</option>
            <option>2018</option>
        </select> 
    </div>
    <div id="affichage">
        <img src="images/AttributionCodeConfidentiel.png" class="tous"/>
        <img src="images/AttributionCodeConfidentiel_201706.png" class="17" class="juin"/>
        <img src="images/AttributionCodeConfidentiel_201707.png" class="17" class="juil"/>
        <img src="images/AttributionCodeConfidentiel_201708.png" class="17" class="aout"/>
        <img src="images/AttributionCodeConfidentiel_201709.png" class="17" class="sept"/>
        <img src="images/AttributionCodeConfidentiel_201710.png" class="17" class="oct"/>
        <img src="images/AttributionCodeConfidentiel_201711.png" class="17" class="nov"/>
        <img src="images/AttributionCodeConfidentiel_201712.png" class="17" class="dec"/>
        <img src="images/AttributionCodeConfidentiel_201801.png" class="18" class="jan"/>
        <img src="images/AttributionCodeConfidentiel_201802.png" class="18" class="fev"/>
        <img src="images/AttributionCodeConfidentiel_201803.png" class="18" class="mar"/>
        <img src="images/AttributionCodeConfidentiel_201804.png" class="18" class="avr"/>
        <img src="images/AttributionCodeConfidentiel_201805.png" class="18" class="mai"/>
        <img src="images/AttributionCodeConfidentiel_201806.png" class="18" class="jui"/>
        <img src="images/AttributionCodeConfidentiel_201807.png" class="18" class="juil"/>
        <img src="images/AttributionCodeConfidentiel_201808.png" class="18" class="aout"/>
    </div>   
      </body>
    </html>
    mon premier problème est ce que je peux identifier chaque image comme j'ai fait?
    et ensuite je ne sais pas quoi utiliser pour réaliser ce que je veux : javascript ou jquery ...

    merci pour vos conseils par avance!

  2. #2
    Membre éclairé
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Avril 2017
    Messages
    502
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2017
    Messages : 502
    Points : 770
    Points
    770
    Par défaut
    Citation Envoyé par Bensljul Voir le message
    j'aimerais créer une liste déroulant dynamique en html


    Bonsoir, en fait je ne sais pas ce que tu veux faire avec les images. Exprime toi clairement.

    Cordialement.

  3. #3
    Modérateur
    Avatar de ProgElecT
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2004
    Messages
    6 077
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Décembre 2004
    Messages : 6 077
    Points : 17 165
    Points
    17 165
    Par défaut
    Salut

    Pour la déclaration class de tes images
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
        <!-- <img src="images/AttributionCodeConfidentiel_201706.png" class="17" class="juin"/> -->
             <img src="images/AttributionCodeConfidentiel_201706.png" class="17 juin"/>
    inutile de répéter class= plusieurs fois pour le même élément, sinon tu auras une erreur Duplicate attribute class.
    Soyez sympa, pensez -y
    Balises[CODE]...[/CODE]
    Balises[CODE=NomDuLangage]...[/CODE] quand vous mettez du code d'un autre langage que celui du forum ou vous postez.
    Balises[C]...[/C] code intégré dans une phrase.
    Balises[C=NomDuLangage]...[/C] code intégré dans une phrase quand vous mettez du code d'un autre langage que celui du forum ou vous postez.
    Le bouton en fin de discussion, quand vous avez obtenu l'aide attendue.
    ......... et pourquoi pas, pour remercier, un pour celui/ceux qui vous ont dépannés.
    👉 → → Ma page perso sur DVP ← ← 👈

  4. #4
    Invité
    Invité(e)
    Par défaut
    @ProgElecT +1 (je n'avais pas vu )

    1- Le plus malin serait déjà de mettre des attributs value aux <option>.

    De préférence, numériques (c'est toujours plus facile à traiter) :
    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
    <div id="liste">      
        <select onchange="affichage_images();" id="mois">
            <option value="99"> tous</option> <!-- Toute l'année -->
            <option value="1"> janv</option>
            <option value="2"> fev</option>
            <option value="3"> mar</option>
            <option value="4"> avr</option>
            <option value="5"> mai</option>
            <option value="6"> juin</option>
            <option value="7"> juil</option>
            <option value="8"> aout</option>
            <option value="9"> sept</option>
            <option value="10"> oct</option>
            <option value="11"> nov</option>
            <option value="12"> dec</option>
        </select>
        <select onchange="affichage_images();" id="annee">
            <option value="2017">2017</option>
            <option value="2018">2018</option>
        </select> 
    </div>
    2- Ensuite, au lieu des classes, il est là aussi plus malin d'utiliser des attributs data-* (Utiliser les attributs de données).

    On obtient alors:
    Code html : 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
    <div id="affichage">
        <img src="images/AttributionCodeConfidentiel.png" data-annee="2017" data-mois="99"/>
        <img src="images/AttributionCodeConfidentiel_201706.png" data-annee="2017" data-mois="6"/>
        <img src="images/AttributionCodeConfidentiel_201707.png" data-annee="2017" data-mois="7"/>
        <img src="images/AttributionCodeConfidentiel_201708.png" data-annee="2017" data-mois="8"/>
        <img src="images/AttributionCodeConfidentiel_201709.png" data-annee="2017" data-mois="9"/>
        <img src="images/AttributionCodeConfidentiel_201710.png" data-annee="2017" data-mois="10"/>
        <img src="images/AttributionCodeConfidentiel_201711.png" data-annee="2017" data-mois="11"/>
        <img src="images/AttributionCodeConfidentiel_201712.png" data-annee="2017" data-mois="12"/>
     
        <img src="images/AttributionCodeConfidentiel.png" data-annee="2018" data-mois="99"/>
        <img src="images/AttributionCodeConfidentiel_201801.png" data-annee="2018" data-mois="1"/>
        <img src="images/AttributionCodeConfidentiel_201802.png" data-annee="2018" data-mois="2"/>
        <img src="images/AttributionCodeConfidentiel_201803.png" data-annee="2018" data-mois="3"/>
        <img src="images/AttributionCodeConfidentiel_201804.png" data-annee="2018" data-mois="4"/>
        <img src="images/AttributionCodeConfidentiel_201805.png" data-annee="2018" data-mois="5"/>
        <img src="images/AttributionCodeConfidentiel_201806.png" data-annee="2018" data-mois="6"/>
        <img src="images/AttributionCodeConfidentiel_201807.png" data-annee="2018" data-mois="7"/>
        <img src="images/AttributionCodeConfidentiel_201808.png" data-annee="2018" data-mois="8"/>
    </div>

    3- Enfin, l'affichage/masquage se gère très bien en JavaScript.

    N.B. jQuery EST du JavaScript.
    Seule la syntaxe change (elle est plus simple en jQuery, mais nécessite de charger la librairie).

    4- Il ne te reste plus qu'à écrire la fonction affichage_images() :

    Code JavaScript : 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
    function affichage_images()
    {
      var val_mois = Number(document.getElementById('mois').value);
      var val_annee = Number(document.getElementById('annee').value);
     
      var images = document.querySelectorAll('#affichage img');
      images.forEach( function(image){
        if(   (val_mois == 99 && image.dataset.annee == val_annee)
           || (val_mois != 99 && image.dataset.mois == val_mois && image.dataset.annee == val_annee )
        ){
          image.style.display = 'block';
        } else {
          image.style.display = 'none';
        }
      });
    }
    On peut masquer en CSS toutes les images au chargement de la page :
    Code css : Sélectionner tout - Visualiser dans une fenêtre à part
    #affichage img { display:none; }
    Si des valeurs sont déjà sélectionnée dans les listes déroulantes (par exemple "2017"), il faut activer la fonction au chargement de la page (onload) :
    Code JavaScript : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    window.onload = function(){
      affichage_images();
    }
    Dernière modification par Invité ; 29/08/2018 à 18h25.

  5. #5
    Membre du Club
    Homme Profil pro
    Intérimaire
    Inscrit en
    Mai 2017
    Messages
    91
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Intérimaire

    Informations forums :
    Inscription : Mai 2017
    Messages : 91
    Points : 60
    Points
    60
    Par défaut
    Merci beaucoup !!

    je vais tester çà aujourd'hui même !!

Discussions similaires

  1. Afficher des images en fonction de la sélection des listes déroulantes
    Par NouveauDev dans le forum Général JavaScript
    Réponses: 9
    Dernier message: 28/02/2018, 16h00
  2. Affichage image en fonction d'une liste déroulante
    Par watcha2008 dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 10/04/2013, 09h17
  3. liste déroulante affichage automatique recherche
    Par ivan7 dans le forum Access
    Réponses: 4
    Dernier message: 21/04/2006, 18h39
  4. liste déroulante d'image
    Par moonia dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 11/04/2006, 20h02
  5. zone de liste déroulante - affichage
    Par r@phy dans le forum IHM
    Réponses: 7
    Dernier message: 21/12/2005, 18h58

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