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 :

Numérotation dynamique de div visible


Sujet :

JavaScript

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Juillet 2016
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux

    Informations forums :
    Inscription : Juillet 2016
    Messages : 8
    Par défaut Numérotation dynamique de div visible
    Bonjour et merci de me lire, j'ai besoin d'un coup de main en javascript svp.

    j'ai plusieurs div identiques, générer dynamiquement en fonction de donnés envoyés par un formulaire, pour cette exemple imaginons que 10 div sont générés, certaines sont cachées et d'autre non (cachées par un clique sur un bouton toogle...), j'ai besoin de numérotés les div non cachées en fonction de leurs positions d'affichage en ajoutant a chaque div une balise <h2>.

    j'utilise .length pour connaitre le nombre de div non caché avec ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    var countHidden = $('.MaClass:visible').length;
    Je ne trouve pas comment les numérotés en fonction de la position de chaque div qui a la classe .MaClass et qui est visible (display:block)

    Actuellement les div apparaissent comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    <div id="1" class="MaClass"</div>
    <div id="2" class="MaClass"</div>
    <div id="3" class="MaClass"</div>
    <div id="4" class="MaClass"</div>
    <div id="5" class="MaClass"</div>
    <div id="6" class="MaClass"</div>
    <div id="7" class="MaClass"</div>
    <div id="8" class="MaClass"</div>
    <div id="9" class="MaClass"</div>
    <div id="10" class="MaClass"</div>
    Il faudrait avec un bouton, les numérotés comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    <div id="1" class="MaClass"><h2>position 1</h2></div>
    <div id="2" class="MaClass"><h2>position 2</h2></div>
    <div id="3" class="MaClass"><h2>position 3</h2></div>
    <div id="4" class="MaClass"><h2>position 4</h2></div>
    <div id="5" class="MaClass"><h2>position 5</h2></div>
    <div id="6" class="MaClass"><h2>position 6</h2></div>
    <div id="7" class="MaClass"><h2>position 7</h2></div>
    <div id="8" class="MaClass"><h2>position 8</h2></div>
    <div id="9" class="MaClass"><h2>position 9</h2></div>
    <div id="10" class="MaClass"><h2>position 10</h2></div>
    Pour exemple, il faudrait que si je désactive la div 6 et 2 le calcule ce réinitialise dynamiquement sur toutes les div visible afin que le compte reste dans l'ordre d'affichage croissant (de la première div affichée a la dernière) comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    <div id="1" class="MaClass"><h2>position 1</h2></div>
    <div id="3" class="MaClass"><h2>position 2</h2></div>
    <div id="4" class="MaClass"><h2>position 3</h2></div>
    <div id="5" class="MaClass"><h2>position 4</h2></div>
    <div id="7" class="MaClass"><h2>position 5</h2></div>
    <div id="8" class="MaClass"><h2>position 6</h2></div>
    <div id="9" class="MaClass"><h2>position 7</h2></div>
    <div id="10" class="MaClass"><h2>position 8</h2></div>
    Merci d'avance a tous pour votre aide.
    Cordialement.

  2. #2
    Membre très actif
    Homme Profil pro
    bricoleur par les mots
    Inscrit en
    Avril 2015
    Messages
    744
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 80
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : bricoleur par les mots
    Secteur : Distribution

    Informations forums :
    Inscription : Avril 2015
    Messages : 744
    Par défaut
    jour

    en prenant en compte que tous les éléments on la même class ça donne ceci

    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
     
    function teste(){
     
    var compteur=1
    var all =document.querySelectorAll(".MaClass");
     
    	for(var i=0;i<all.length;i++){
     
    		if(all[i].style.display=="block"){
     
    			all[i].firstElementChild.textContent=compteur
    		compteur++
    		}
     
    }
     
    }

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Juillet 2016
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux

    Informations forums :
    Inscription : Juillet 2016
    Messages : 8
    Par défaut
    Bonjour et merci de ta solution melka one.

    Ceci ne fonctionne pas :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    all[i].firstElementChild.textContent=compteur
    		compteur++
    j'ai supprimé la condition uniquement pour testé la formule en attendant ... ça donne ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    	all[i].textContent = compteur
    		compteur++;
    Il y a aussi un souci au niveau de l'insertion du texte, bizarrement l’insertion ne s'effectue qu'aux deuxièmes clique, obliger de cliqué deux fois pour voir l'insertion du résultat ?

    J'ai omis de précisé que je doit avoir un deuxièmes bouton qui lance la même fonction inversé (-1 dans le compte si la div est caché...)

    merci

  4. #4
    Nouveau membre du Club
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Juillet 2016
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux

    Informations forums :
    Inscription : Juillet 2016
    Messages : 8
    Par défaut
    Le problème du double click, j'utilise ceci comme bouton :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Créer une nouvelle categorie : <a id="verif'.$album_img.'" href="javascript:compteur();javascript:Afficher('.$album_img.',\'true\');javascript:verificationH(\'dernier2'.$album_img.'\')" /> Oui </a>
    Je passe trois fonctions dans ce bouton, quand je supprime les deux autres fonctions ça marche au premier clique, une idée ?

  5. #5
    Nouveau membre du Club
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Juillet 2016
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux

    Informations forums :
    Inscription : Juillet 2016
    Messages : 8
    Par défaut
    please UP

    Pour quoi ceci ne fonctionne pas ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    all[i].firstElementChild.textContent=compteur
    compteur++;

  6. #6
    Membre expérimenté
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    197
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 197
    Par défaut
    Bonjour,

    Parce qu'il manque un ;
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
         all[i].firstElementChild.textContent=compteur;
         compteur++;
    En même temps, pourquoi faire ça en deux lignes ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
         all[i].firstElementChild.textContent=compteur++;
    devrait marcher aussi...

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

Discussions similaires

  1. Génération dynamique de div
    Par jbrasselet dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 08/11/2007, 13h18
  2. [DOM] Ajouter contenu dynamiquement dans div en javascript
    Par kalan dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 10/11/2006, 11h06
  3. [AJAX] Création dynamique de div
    Par poussinphp dans le forum Général JavaScript
    Réponses: 7
    Dernier message: 01/09/2006, 17h54
  4. Gestion dynamique balise div
    Par Galaad dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 24/08/2006, 17h57
  5. [Css] Double div visible / hidden pour créer un background transparent.
    Par hazardous_material dans le forum Mise en page CSS
    Réponses: 1
    Dernier message: 26/07/2006, 17h41

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