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 :

Afficher un certain nombre de DIV en fonction du choix du nombre dans une liste déroulante


Sujet :

JavaScript

  1. #1
    Membre à l'essai
    Homme Profil pro
    Développeur Stagiaire
    Inscrit en
    Avril 2017
    Messages
    39
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Stagiaire

    Informations forums :
    Inscription : Avril 2017
    Messages : 39
    Points : 12
    Points
    12
    Par défaut Afficher un certain nombre de DIV en fonction du choix du nombre dans une liste déroulante
    Bonjour,

    Encore une fois je fais appel à vous, j'ai bien peur de bloquer sur quelque chose qui a l'air assez con à réaliser. L'idée, comme écrit dans le titre, est de faire une fonction qui permet d'afficher un certain nombre de DIV en fonction d'un nombre choisi dans une liste déroulante. Rien de bien compliqué vu comme ça, pourtant je bloque :/

    J'ai cependant commencé à écrire une fonction JS, mais qui ne fonctionne pas. J'ai également pensé à le faire en jQuery mais je ne vois pas comment (et j'ai des connaissances très limitées avec jQuery).

    Voici le code HTML :
    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
    <label>SAS : </label>
                            <select name="sas" id="sas" onChange="Javascript:choixSas()">
                                <option value="0">Non</option>
                                <option value="1">Oui</option>
                            </select>
                        <div id="sasOk" style="display:none">
                            <label>Nombre : </label>
                                <select name="sasNb" id="sasNb" onchange="Javascript:nbSas()">
                                    <option value="1">1</option>
                                    <?php
                                    for ($i = 2; $i <= 10; $i++){
                                        echo '<option value="'.$i.'">'.$i.'</option>';
                                    }
                                    ?>
                                </select>
                            <div id="nombreOk" name="" style="display: none">
                                <lable>Pour : </label>
                                    <select name="sasSex" id="sasSex">
                                        <option value="0">Homme</option>
                                        <option value="1">Femme</option>
                                        <option value="2">Les deux</option>
                                    </select>
                                <label>SAS-1 : </label>
                                    <select name="sasHeure" id="sasHeure">
                                        <option value="0">00</option>
                                    </select>
                                    :
                                    <select name="sasMinute" id="sasMinute">
                                        <option value="0">00</option>
                                    </select></br></br>
                            </div>
                        </div>

    Le code en JS :
    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
    function choixSas() {
                                if (document.ajoutCourse.sas.value == 1)
                                    document.getElementById("sasOk").style.display = "inline";
                                else
                                    document.getElementById("sasOk").style.display = "none";
                            }
     
                            var sasNb = document.getElementById('sasNb');
                            sasNb.addEventListener('change', nbSas);
     
                            function nbSas() {
                                var i;
                                var nombre = sasNb.options[sasNb.selectedIndex].value;
     
                                for(i = 0; i < nombre; ++i) {
                                    var div = document.createElement('div');
                                    document.body.appendChild(div);
                                }
                            }
    Merci d'avance pour vos réponses !

  2. #2
    Membre confirmé
    Homme Profil pro
    Analyse système
    Inscrit en
    Mai 2014
    Messages
    388
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Arménie

    Informations professionnelles :
    Activité : Analyse système
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Mai 2014
    Messages : 388
    Points : 580
    Points
    580
    Par défaut
    Bonjour,

    Une idée, peut-être?
    Première ligne ci-dessous : nombre est une chaîne de caractères.
    Deuxième ligne : nombre est à convertir en nombre.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    var nombre = sasNb.options[sasNb.selectedIndex].value;
     
    for(i = 0; i < nombre; ++i) {
    Voulez-vous essayer la solution suivante?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    for(i = 0; i < nombre*1; i++) {

  3. #3
    Membre confirmé
    Homme Profil pro
    Analyse système
    Inscrit en
    Mai 2014
    Messages
    388
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Arménie

    Informations professionnelles :
    Activité : Analyse système
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Mai 2014
    Messages : 388
    Points : 580
    Points
    580
    Par défaut
    Rebonjour,

    C'est curieux... En effectuant la correction que je viens de proposer avec un éditeur de texte en ligne, le problème qui existait a été corrigé. Tout de même, j'ai été étonné. J'ai testé à nouveau avec mon éditeur habituel (Gedit). Pas besoin d'effectuer de correction, le code fonctionne. J'ai juste converti en JS la partie en php et ajouté un commentaire pour éviter le doublon...

    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
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    <!DOCTYPE html>
    <html>
    <head>
      <meta charset="utf-8">
    </head>
    <body>
    <label>SAS : </label>
    <select name="sas" id="sas" onChange="Javascript:choixSas()">
      <option value="0">Non</option>
      <option value="1">Oui</option>
    </select>
    <div id="sasOk">
      <label>Nombre : </label>
      <select name="sasNb" id="sasNb" onchange="Javascript:nbSas()">
         <option value="1">1</option>
         <script>
           for ($i = 2; $i <= 10; $i++){
             document.write('<option value="'+$i+'">'+$i+'</option>');
           }
         </script>
       </select>
       <div id="nombreOk" name="" style="display: none">
          <lable>Pour : </label>
          <select name="sasSex" id="sasSex">
            <option value="0">Homme</option>
            <option value="1">Femme</option>
            <option value="2">Les deux</option>
          </select>
          <label>SAS-1 : </label>
          <select name="sasHeure" id="sasHeure">
            <option value="0">00</option>
          </select>
          :
          <select name="sasMinute" id="sasMinute">
            <option value="0">00</option>
          </select></br></br>
        </div>
    </div>
    <script>
    function choixSas() {
      if (document.ajoutCourse.sas.value == 1)
        document.getElementById("sasOk").style.display = "inline";
      else
        document.getElementById("sasOk").style.display = "none";
    }
     
    var sasNb = document.getElementById('sasNb');
    //sasNb.addEventListener('change', nbSas);
     
    function nbSas() {
      var i;
      var nombre = sasNb.options[sasNb.selectedIndex].value;
      for(i = 0; i < nombre; ++i) {
        var div = document.createElement('div');
        document.body.appendChild(div);
      }
    }
    </script>
    </body>
    </html>

  4. #4
    Membre à l'essai
    Homme Profil pro
    Développeur Stagiaire
    Inscrit en
    Avril 2017
    Messages
    39
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Stagiaire

    Informations forums :
    Inscription : Avril 2017
    Messages : 39
    Points : 12
    Points
    12
    Par défaut
    Merci pour la réponse, malheureusement ce code ne fait pas effet chez moi. Quand je choisi un chiffre je n'ai aucun div qui s'affiche :/

    Peut-être que cela vient de mon IDE (NetBeans pour ma part)

  5. #5
    Membre confirmé
    Homme Profil pro
    Analyse système
    Inscrit en
    Mai 2014
    Messages
    388
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Arménie

    Informations professionnelles :
    Activité : Analyse système
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Mai 2014
    Messages : 388
    Points : 580
    Points
    580
    Par défaut
    Bonjour,

    Pour constater l'apparition des balises div (elles ne contiennent rien), sous FireFox, j'appuie sur la touche F12 du clavier. Je regarde l'onglet Inspecteur, dans la partie inférieure de l'écran. Ces balises div apparaissent dès qu'on a sélectionné un nombre.

  6. #6
    Membre confirmé
    Homme Profil pro
    Analyse système
    Inscrit en
    Mai 2014
    Messages
    388
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Arménie

    Informations professionnelles :
    Activité : Analyse système
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Mai 2014
    Messages : 388
    Points : 580
    Points
    580
    Par défaut
    Bonsoir,

    Une autre manière de voir le résultat est d'ajouter une feuille de style.

    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    <style>
    div {
      background : #269;
      margin: 14px;
      padding: 14px;
    }
    </style>

  7. #7
    Membre à l'essai
    Homme Profil pro
    Développeur Stagiaire
    Inscrit en
    Avril 2017
    Messages
    39
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Stagiaire

    Informations forums :
    Inscription : Avril 2017
    Messages : 39
    Points : 12
    Points
    12
    Par défaut
    Ah oui, effectivement avec la feuille de style c'est plus visible

    Bon le dernier soucis est qu'en faite, mise à part la première fois que l'on sélectionne le nombre, le choix de la liste n'affiche pas le nombre exact de div il l'additionne x)

    Je cherche une solution depuis tout à l'heure mais je pense que je suis vraiment une b*** en JS xD

  8. #8
    Membre confirmé
    Homme Profil pro
    Analyse système
    Inscrit en
    Mai 2014
    Messages
    388
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Arménie

    Informations professionnelles :
    Activité : Analyse système
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Mai 2014
    Messages : 388
    Points : 580
    Points
    580
    Par défaut
    Bonsoir,

    document.body.removeChild() permet d'enlever un élément.

Discussions similaires

  1. Réponses: 1
    Dernier message: 23/05/2017, 10h44
  2. Réponses: 2
    Dernier message: 07/03/2016, 18h30
  3. Réponses: 5
    Dernier message: 01/07/2010, 18h02
  4. Réponses: 4
    Dernier message: 04/08/2009, 16h36
  5. Réponses: 6
    Dernier message: 29/07/2009, 15h31

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