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 :

Sélectionner x éléments HTML, en faire 1 groupe et le placer dans une div


Sujet :

JavaScript

  1. #1
    Membre régulier
    Homme Profil pro
    Infographiste, Webdesigner
    Inscrit en
    Juillet 2012
    Messages
    109
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Drôme (Rhône Alpes)

    Informations professionnelles :
    Activité : Infographiste, Webdesigner
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Juillet 2012
    Messages : 109
    Points : 70
    Points
    70
    Par défaut Sélectionner x éléments HTML, en faire 1 groupe et le placer dans une div
    Bonjour à tous et à toutes,

    J'ai une div Agenda contenant un titre et 12 blocs/éléments/événements :
    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
    <div class="agenda">
        <h2>Agenda</h2>
        <div class="col-md-4">
            <div class="contenu-1">Contenu</div>
        </div>
        <div class="col-md-4">
            <div class="contenu-2">Contenu</div>
        </div>
        <div class="col-md-4">
            <div class="contenu-3">Contenu</div>
        </div>
        <div class="col-md-4">
            <div class="contenu-4">Contenu</div>
        </div>
        <div class="col-md-4">
            <div class="contenu-5">Contenu</div>
        </div>
        <div class="col-md-4">
            <div class="contenu-6">Contenu</div>
        </div>
        <div class="col-md-4">
            <div class="contenu-7">Contenu</div>
        </div>
        <div class="col-md-4">
            <div class="contenu-8">Contenu</div>
        </div>
        <div class="col-md-4">
            <div class="contenu-9">Contenu</div>
        </div>
        <div class="col-md-4">
            <div class="contenu-10">Contenu</div>
        </div>
        <div class="col-md-4">
            <div class="contenu-11">Contenu</div>
        </div>
        <div class="col-md-4">
            <div class="contenu-12">Contenu</div>
        </div>
    </div>

    Je souhaiterais (dans l'ordre)
    - sélectionner toutes mes div avec la classe "col-md-4"
    - les regrouper dans 1 seul groupe
    - placer ce groupe dans une div avec, par exemple, la classe "evenements"

    J'ai voulu faire ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $(".agenda .col-md-4").wrap('<div class="evenements"></div>');
    mais le problème (les "pros" comme vous auront tout de suite compris) c'est que ça place CHAQUE div avec la classe "col-md-4" dans une div avec la classe "evenements"

    (Sachant que je n'ai pas la main sur le HTML et que je ne peux passer que par un script Javascript ou jQuery) Comment faire pour que toutes mes div avec la classe "col-md-4" ne fasse qu'un seul groupe pour ensuite le placer dans une div avec la classe "evenements" ?

    D'avance merci beaucoup pour vos réponses

    Bonne journée

  2. #2
    Membre expert
    Homme Profil pro
    Inscrit en
    Octobre 2011
    Messages
    2 873
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2011
    Messages : 2 873
    Points : 3 717
    Points
    3 717
    Par défaut
    Salut,

    C'est pratiquement la div de class agenda alors pourquoi ne pas juste changer la class ?

    Sinon une possibilité en JS pur :

    Code javascript : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    let divs = document.querySelectorAll(".agenda .col-md-4")
    let group = document.createElement("div")
    group.className = "evenements"
     
    for (let elem of divs) {
        group.appendChild(elem)
    }
    document.body.appendChild(group)

    Tu peux le convertir en JQuery...

  3. #3
    Inactif  
    Homme Profil pro
    Webmaster
    Inscrit en
    Juin 2021
    Messages
    645
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Webmaster
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juin 2021
    Messages : 645
    Points : 1 280
    Points
    1 280
    Par défaut
    Bonjour,

    si on veut respecter la structure Bootstrap :
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <div class="container">
      <div class="row">
        <div class="col-xxx-xx">

    il faudrait :
    Code js : Sélectionner tout - Visualiser dans une fenêtre à part
    group.className = "evenements row";
    et, éventuellement (si la class "container" * n'existe pas déjà parmi les "parents") :
    Code js : Sélectionner tout - Visualiser dans une fenêtre à part
    document.querySelector(".agenda").classList.add("container");
    * ou "container-fluid"

  4. #4
    Membre régulier
    Homme Profil pro
    Infographiste, Webdesigner
    Inscrit en
    Juillet 2012
    Messages
    109
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Drôme (Rhône Alpes)

    Informations professionnelles :
    Activité : Infographiste, Webdesigner
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Juillet 2012
    Messages : 109
    Points : 70
    Points
    70
    Par défaut
    Bonjour,

    Merci à tous les 2
    Citation Envoyé par Beginner. Voir le message
    C'est pratiquement la div de class agenda alors pourquoi ne pas juste changer la class ?
    Parce que 1) j'ai beaucoup simplifié mon code d'exemple (en vrai, il y a d'autres éléments au même niveau que le titre, comme des filtres pour filtrer les éléments) et surtout 2) (comme je l'expliquais à la fin de mon message) je n'ai pas la main sur le HTML.

    Merci bien Jreaux62. Effectivement, c'est bien mieux en respectant la structure Bootstrap

    Beginner, désolé, mais ça fonctionne à 90%.
    Pour faire court, ça coince à la dernière ligne de code quand ça l'ajoute à l'élément body :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    document.body.appendChild(group)
    car ça a pour effet de me placer mes éléments sous le pied de page.

    Comment faire pour que ça s'ajoute à la div qui a la classe "dp-node-agenda" ?

    Encore merci

    Bonne journée

  5. #5
    Inactif  
    Homme Profil pro
    Webmaster
    Inscrit en
    Juin 2021
    Messages
    645
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Webmaster
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juin 2021
    Messages : 645
    Points : 1 280
    Points
    1 280
    Par défaut
    Bonjour,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    document.querySelector(".dp-node-agenda").appendChild(group);
    En jQuery, tout ça se résume à :

    Code js : Sélectionner tout - Visualiser dans une fenêtre à part
    $(".dp-node-agenda").addClass('row').append( $(".agenda .col-md-4") );


  6. #6
    Membre expert
    Homme Profil pro
    Inscrit en
    Octobre 2011
    Messages
    2 873
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2011
    Messages : 2 873
    Points : 3 717
    Points
    3 717
    Par défaut
    Citation Envoyé par spip93 Voir le message

    Beginner, désolé, mais ça fonctionne à 90%.
    Ben en fait le code fait ce que tu as demandé :

    Citation Envoyé par spip93 Voir le message
    Je souhaiterais (dans l'ordre)
    - sélectionner toutes mes div avec la classe "col-md-4"
    - les regrouper dans 1 seul groupe
    - placer ce groupe dans une div avec, par exemple, la classe "evenements"

    ...
    Comment faire pour que toutes mes div avec la classe "col-md-4" ne fasse qu'un seul groupe pour ensuite le placer dans une div avec la classe "evenements" ?

  7. #7
    Membre régulier
    Homme Profil pro
    Infographiste, Webdesigner
    Inscrit en
    Juillet 2012
    Messages
    109
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Drôme (Rhône Alpes)

    Informations professionnelles :
    Activité : Infographiste, Webdesigner
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Juillet 2012
    Messages : 109
    Points : 70
    Points
    70
    Par défaut
    Merci à tous les 2; je viens de tester (désolé, je ne suis pas chez moi cette semaine. C'est pour ça que je réponds tardivement) ça fonctionne très bien
    Excellente journée à vous

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

Discussions similaires

  1. Sélectionner un élément HTML en Javascript dans une boucle
    Par danieldou dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 04/06/2017, 13h40
  2. [HTML] Lecture flv dans une "DIV Frame" avec overflow: auto
    Par bigjim21 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 1
    Dernier message: 25/10/2006, 00h35
  3. [HTML]ouvrir une page html dans une div
    Par Phenomenium dans le forum Balisage (X)HTML et validation W3C
    Réponses: 5
    Dernier message: 16/01/2006, 17h23
  4. [CSS] Comment faire apparaitre l'ascenceur dans une <div&
    Par vampyrx dans le forum Mise en page CSS
    Réponses: 3
    Dernier message: 08/09/2005, 10h06
  5. faire apparaitre et disparaitre un panel dans une frame
    Par Ghost Dog dans le forum Agents de placement/Fenêtres
    Réponses: 5
    Dernier message: 22/04/2005, 01h55

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