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 :

Fonction afficher dans une boucle


Sujet :

JavaScript

  1. #1
    Membre du Club
    Inscrit en
    Juin 2007
    Messages
    79
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 79
    Points : 40
    Points
    40
    Par défaut Fonction afficher dans une boucle
    Bonjour,
    Je souhaite avoir un teste situé dans un 'volet' qui s'affiche ou pas en cliquant sur un bouton. Cette fonction se trouve dans une boucle.
    J'ai utilisé la fonction java x.style.display, mais cela ne fonctionne que sur le premier résultat de ma boucle.
    Code : Tout sélectionner

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    <script>
    function voletinfo1() {
    var x = document.getElementById("volet1");
    if (x.style.display === "none") {
    x.style.display = "block";
    } else {
    x.style.display = "none";
    }
    }
    </script>
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
      <button class="buttonvoletinfo" onClick="voletinfo1()">Contenus en espagnol 2 </button>
     
    						  <div class="volet1" id="volet1" style="display: none;"> test </div>

    Je ne vois pas trop comment faire. Si quelqu'un peut m'aider, merci.

  2. #2
    Membre du Club
    Inscrit en
    Juin 2007
    Messages
    79
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 79
    Points : 40
    Points
    40
    Par défaut
    J'ai passé la journée à tester plein de solutions.

    Même en nommant le document.getElementById en 5, j'ai seulement le volet de la première ligne qui s'ouvre

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    		<script>
    function voletinfo1() {
      var x = document.getElementById("5");
      if (x.style.display === "none") {
        x.style.display = "block";
      } else {
        x.style.display = "none";
      }
    }
     
    </script>
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    <div class="volet1" id="5" style="display: none;"> test </div>

  3. #3
    Expert éminent sénior
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 305
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 305
    Points : 15 633
    Points
    15 633
    Par défaut
    si vous utilisez les "id", cela veut dire que vous avez fait une fonction pour chaque élément. c'est bien ça ?

    pour éviter cette duplication du code, il vaut mieux utiliser les classes css et comme ça vous pouvez utiliser getElementsByClassName et faire des boucles pour gérer cela :
    https://developer.mozilla.org/fr/doc...ntsByClassName

    regardez aussi l'exemple dont le lien est dans ce message :
    https://www.developpez.net/forums/d2.../#post11889125

  4. #4
    Membre du Club
    Inscrit en
    Juin 2007
    Messages
    79
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 79
    Points : 40
    Points
    40
    Par défaut
    'ai avancé, mais je bloque sur l'écriture d'un variable dans le document.getElementById().
    J'ai besoin d'y insérer la variable $n derriere le volet_, mais je ne sais pas l'écrire.
    En notant volet_1, j'ai bien le volet 1 qui s'ouvre ,avec volet_2 le volet 2 s'ouvre...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    <?php do {
    $n = $n + 1;
    ?>
    <script>
    function voletinfo() {
    var x = document.getElementById('volet_');
    if (x.style.display === "none") {
    x.style.display = "block";
    } else {
    x.style.display = "none";
    }
    }
    </script>

  5. #5
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 640
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 640
    Points : 66 669
    Points
    66 669
    Billets dans le blog
    1
    Par défaut
    Je ne sais pas si c'est toujours d'actualité, mais "autrefois" un id ne devait jamais être uniquement numérique
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  6. #6
    Expert confirmé
    Avatar de Doksuri
    Profil pro
    Développeur Web
    Inscrit en
    Juin 2006
    Messages
    2 464
    Détails du profil
    Informations personnelles :
    Âge : 54
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 464
    Points : 4 646
    Points
    4 646
    Par défaut
    Citation Envoyé par SpaceFrog Voir le message
    Je ne sais pas si c'est toujours d'actualité, mais "autrefois" un id ne devait jamais être uniquement numérique
    oui developer.mozilla.org/fr/docs/Web/HTML/Global_attributes/id
    Citation Envoyé par mdn
    La valeur de cet attribut ne doit pas contenir de blancs (espaces, tabulation, etc.). Les navigateurs interprèteront les identifiants avec des espaces comme si l'espace faisait partie de l'identifiant. Ce comportement est différent de celui de l'attribut class qui permet d'avoir des valeurs séparées par des espaces. Les éléments ne peuvent avoir qu'un seul identifiant défini via l'attribut id.
    La forme des pyramides prouve que l'Homme a toujours tendance a en faire de moins en moins.

    Venez discuter sur le Chat de Développez !

  7. #7
    Membre du Club
    Inscrit en
    Juin 2007
    Messages
    79
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 79
    Points : 40
    Points
    40
    Par défaut
    Merci, mais si je tape document.getElementById() sur internet et je regarde les résultat, je ne vois que des résultats du genre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    document.getElementById("demo");
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    var number=document.getElementById("number").value;
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    var element = document.getElementById('ID');
    Moi j'ai besoin d'y intégrer une variable, car je l'utilise pour une fonction afficher/cacher dans une boucle et il me faut un id différent pour chaque ligne.

    Quelqu'un sur le forum pourrait vraiment m'aider sur ça ?

  8. #8
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 640
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 640
    Points : 66 669
    Points
    66 669
    Billets dans le blog
    1
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    var number=document.getElementById("number"+increment).value;
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  9. #9
    Membre actif
    Homme Profil pro
    libre
    Inscrit en
    Juin 2019
    Messages
    205
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations professionnelles :
    Activité : libre

    Informations forums :
    Inscription : Juin 2019
    Messages : 205
    Points : 292
    Points
    292
    Par défaut
    essaie ce code

    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
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    <html>
    <style>
     .buttonvoletinfo{
             background-color:#fff;
        }
     .buttonvoletinfoOFF{
             background-color:#ff0;
        } 
     #volet div {
               display: none;
        }
     
    </style>
    <script>  
    function voletinfo1(cliquant,cible_id) 
    {        
      if (document.getElementById(cible_id).style.display == "block"){  
        document.getElementById(cible_id).style.display="none"; 
        cliquant.className="buttonvoletinfo";  
      }else{   
        document.getElementById(cible_id).style.display="block";
        cliquant.className="buttonvoletinfoOFF";  
      }            
     
    }  
    </script>  
    <body>
     <div id="volet">
     <?php
        $n =0;
        do {
         $n = $n + 1;
     ?>
       <button onClick="voletinfo1(this,'volet<?=$n?>');">Contenus en espagnol <?=$n?> </button><br>
       <div  id="volet<?=$n?>" > test <?=$n?> 
     
       </div>	
     
      <?php
        }while($n < 5);
     ?>  
     
    </body>	
    </html>

Discussions similaires

  1. fonction mail dans une boucle while
    Par tjoce dans le forum Langage
    Réponses: 5
    Dernier message: 23/04/2010, 18h39
  2. vba fonction split dans une boucle
    Par mymoi dans le forum VBA Access
    Réponses: 6
    Dernier message: 26/05/2009, 10h17
  3. [MySQL] Fonction récursive dans une boucle
    Par renaud26 dans le forum PHP & Base de données
    Réponses: 6
    Dernier message: 21/02/2008, 12h18
  4. la fonction SOMMEPROD dans une boucle dynamique
    Par Mounamidou dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 15/10/2007, 16h32
  5. Fonction system() dans une boucle for
    Par banban56 dans le forum C
    Réponses: 3
    Dernier message: 16/06/2007, 18h48

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