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

jQuery Discussion :

Faire une boucle dans une boucle


Sujet :

jQuery

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre expérimenté
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 181
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 181
    Par défaut Faire une boucle dans une boucle
    Bonjour,

    J'ai des containers et dedans des details

    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
    <div class="container card sensor-{{ se.id_sensor}}" data-idsensor="{{ se.id_sensor}}">>
     
                                <img src="{% static 'images/graph.png' %}" class="card-img-top" alt="...">
     
     
                                <div class="container-sensor">
                                    <canvas id="sensor-{{ se.id_sensor}}" class="canvas"></canvas>
                                </div>
     
     
                                <div class="card-body">
                                    <h5 class="card-title">{{ se.sensor_longname }} [{{ se.sensor_types_id_sensor_type.measure_unit }}]</h5>
                                    <p class="card-text">
                                        Station: ({{ se.stations_id_station.id_station }}) {{ se.stations_id_station.station_longname }}</p>
                                    <p class="card-text">
                                        Sensors ID: {{ se.id_sensor}}<br>
                                        Type: {{ se.chart_style_id_chart_style.chart_style_name }}<br>
                                        Actif: {{ se.sensor_active }}<br>
                                        Créé le: {{ se.sensor_created }}<br>
                                        Couleur: {{ se.chart_backgroundColor_id_chart_backgroundColor.colors_id_colors.color_name }} (VALUE: {{ se.chart_backgroundColor_id_chart_backgroundColor.colors_id_colors.color_value }})<br>
                                        <details>
                                            <table class="data">
                                                <tr>
                                                    <th>Date</th><th>Value</th>
                                                </tr>
                                                {% for d in se.datas %}
                                                    <tr data-x="{{ d.measure_created }}" data-y="{{ d.value }}"><td class="data-x"><time>{{ d.measure_created }}</time></td><td class="data-y">{{ d.value }}</td></tr>
                                                {% endfor %}
                                            </table>
                                        </details>
                                    </p>
                                </div>
                            </div>

    J'arrive looper les container ainsi (note: il y a plusieurs < div class="container" >)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $('#charts .container').each(function(){})
    mais je dois encore looper la balise details ( ou la table avec la class data) pour récupérer les valeurs de data-x et data-y

    J'ai essayé ceci sans succès

    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
    $('#charts .container').each(function(){
     
                    console.log("Sensor: ",$(this).attr('data-idsensor'));
                    sensors.push({
                        'id_sensor':$(this).attr('data-idsensor')
                    });
     
                    $currentStation = $(this);
                    console.log($currentStation);
     
                    $currentStation.find('.data tr').each(function(){
                        console.log("\tx: ",$(this).attr('data-x'));
                        console.log("\ty: ",$(this).attr('data-y'));
                    });
     
     
     
                })
    à la place de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $currentStation.find('.data tr').each(function(){
    j'avais aussi essayé, sans succès

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $currentStation.closest('.data').not(':first').each(function(){})
    car, aussi, je ne suis pas intéressé par le premier li du tableau.

    Je pense ne pas être très loin, mais comment puis-je faire de manière propre et optimale?

    Merci et bonne soirée

  2. #2
    Membre expérimenté
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 181
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 181
    Par défaut
    J'ai réussi à le faire ainsi, qu'en pensez-vous?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    $('#charts .container').each(function(){
        console.log("Sensor: ",$(this).attr('data-idsensor'));
        sensor_id_class = 'sensor-' + $(this).attr('data-idsensor');
     
        $('.' + sensor_id_class + ' .data').each(function(){
            console.log("\tx: ",$(this).attr('data-x'));
            console.log("\ty: ",$(this).attr('data-y'));
        });
    });
    Ca marche, mais est-ce bien?

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

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 698
    Par défaut
    pourquoi vous générez du code html pour ensuite en extraire les données ? ça ne serait pas plus efficace de générer directement une variable javascript qui contient les données ?

  4. #4
    Membre expérimenté
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 181
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 181
    Par défaut
    Oui probablement.
    Je travaille avec Django et je commence avec ce framework.
    Pour le moment, je fais comme je peux, mais il y a sûrement un moyen plus optimale de sauver les données dans des data- et les récupérer en js.
    Je suis d'accord. J'aiméliorerai ceci au fur et à mesure que je progresse avec Django. Je vais étudier les REST Api qui va surement faire les choses mieux

  5. #5
    Expert confirmé
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 698
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 698
    Par défaut
    si vous avez les données dans une variable python, vous pouvez générer une variable javascript avec les méthodes indiquées sur cette page :
    https://docs.python.org/fr/3/library/json.html

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

Discussions similaires

  1. Réponses: 8
    Dernier message: 02/01/2016, 22h48
  2. Comment lire deux fois la meme table avec une clé différente
    Par Denis_67 dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 09/12/2013, 11h25
  3. Comment puis-je interrompre une boucle each ?
    Par bnohit dans le forum jQuery
    Réponses: 3
    Dernier message: 20/04/2011, 22h28
  4. Pb d'insertion deux fois avec une query d'un dataAdapter
    Par Contact2012 dans le forum ASP.NET
    Réponses: 2
    Dernier message: 02/09/2008, 14h48
  5. [CSS] comment puis utiliser le meme css avec 2 nom different
    Par pierrot10 dans le forum Mise en page CSS
    Réponses: 1
    Dernier message: 08/09/2006, 13h51

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