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 :

If dans une boucle forEach - une seule itération


Sujet :

jQuery

  1. #1
    Membre à l'essai
    Homme Profil pro
    BTS SIO
    Inscrit en
    Mai 2016
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Mayenne (Pays de la Loire)

    Informations professionnelles :
    Activité : BTS SIO

    Informations forums :
    Inscription : Mai 2016
    Messages : 17
    Points : 12
    Points
    12
    Par défaut If dans une boucle forEach - une seule itération
    Bonjour,

    Je suis débutant en javascript et je rencontre mon premier problème.

    J'ai une boucle forEach qui récupère les valeurs d'une colonne d'un tableau (une date) puis qui effectue une action si la condition If est remplit (date inférieure à la date actuelle).

    Voici mon fichier javascript, la fonction concernée est en bas:

    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
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
     
    $(document).ready(function() {
      hideInactives()
     
      $('#show').on( 'click', function (e) {
        e.preventDefault()
     
          $('#dataTable tbody tr').each(function () {
            $(this).show()
          })
     
          $('#hide').show()
          $('#show').hide()
        });
     
      $('#hide').on( 'click', function (e) {
        e.preventDefault()
          hideInactives()
      });
    });
     
    function hideInactives(){
      $('#hide').hide()
      $('#show').show()
     
      $('#dataTable tbody tr').each(function () {
        var $rowValue = $(this).find('td').eq(5).html()
     
          if(moment($rowValue).isBefore()){
            $(this).hide()
            $(this).addClass("inactives")
          }
      })
    }
    Mon problème est que je ne rentre qu'une fois dans mon if (pour la première date qui remplie la condition) même si plusieurs dates remplissent la condition.

    Est-ce un problème d'algorithme?

    Merci de m'avoir lu.

  2. #2
    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 637
    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 637
    Points : 66 661
    Points
    66 661
    Billets dans le blog
    1
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    counter=0;
     $('#dataTable tbody tr').each(function () {
        var $rowValue = $(this).find('td').eq(5).html()
        counter++;
         if(moment($rowValue).isBefore()){
            $(this).hide()
            $(this).addClass("inactives")
          }
      })
    console.log(counter)
    que te retourne counter ?

    sinon isBefore() n'attend pas un argument pour la comparaison ?
    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 !

  3. #3
    Membre à l'essai
    Homme Profil pro
    BTS SIO
    Inscrit en
    Mai 2016
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Mayenne (Pays de la Loire)

    Informations professionnelles :
    Activité : BTS SIO

    Informations forums :
    Inscription : Mai 2016
    Messages : 17
    Points : 12
    Points
    12
    Par défaut
    Counter me renvoit le nombre de row contenu dans le tableau.

    isBefore() sans argument prend comme valeur la date actuelle, ce qui est le comportement voulu.

  4. #4
    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 637
    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 637
    Points : 66 661
    Points
    66 661
    Billets dans le blog
    1
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    counter="";
     $('#dataTable tbody tr').each(function () {
        var $rowValue = $(this).find('td').eq(5).html()
        counter+=$rowValue ;
         if(moment($rowValue).isBefore()){
            $(this).hide()
            $(this).addClass("inactives")
          }
      })
    console.log(counter)
    et là les dates elles correspondent ?
    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 !

  5. #5
    Membre à l'essai
    Homme Profil pro
    BTS SIO
    Inscrit en
    Mai 2016
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Mayenne (Pays de la Loire)

    Informations professionnelles :
    Activité : BTS SIO

    Informations forums :
    Inscription : Mai 2016
    Messages : 17
    Points : 12
    Points
    12
    Par défaut
    Oui je récupère bien toutes les dates de mon tableau.

    Visiblement le soucis vient des dates, de 01 à 12 jours ça fonctionne (jusqu'en 2016, par pour 2017), à partir du 13è jour ou plus ça ne fonctionne plus. J'ai du mal à comprendre pourquoi, je vais me renseigner sur la documentation moment.js

  6. #6
    Membre à l'essai
    Homme Profil pro
    BTS SIO
    Inscrit en
    Mai 2016
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Mayenne (Pays de la Loire)

    Informations professionnelles :
    Activité : BTS SIO

    Informations forums :
    Inscription : Mai 2016
    Messages : 17
    Points : 12
    Points
    12
    Par défaut
    erreur

  7. #7
    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 637
    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 637
    Points : 66 661
    Points
    66 661
    Billets dans le blog
    1
    Par défaut
    Mais encore ?
    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 !

  8. #8
    Membre à l'essai
    Homme Profil pro
    BTS SIO
    Inscrit en
    Mai 2016
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Mayenne (Pays de la Loire)

    Informations professionnelles :
    Activité : BTS SIO

    Informations forums :
    Inscription : Mai 2016
    Messages : 17
    Points : 12
    Points
    12
    Par défaut
    Problème résolu, le soucis vient du format de date, mes dates sont au format DD/MM/YYYY et la comparaison se faisait par rapport au format MM/DD/YYYY.

  9. #9
    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 637
    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 637
    Points : 66 661
    Points
    66 661
    Billets dans le blog
    1
    Par défaut
    ok
    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 !

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

Discussions similaires

  1. indérer une variable dans une boucle foreach
    Par manuso dans le forum Langage
    Réponses: 4
    Dernier message: 14/10/2012, 09h49
  2. Comment créer un tableau dans une boucle foreach ?
    Par razily dans le forum Langage
    Réponses: 4
    Dernier message: 30/04/2012, 11h25
  3. Réponses: 7
    Dernier message: 22/02/2012, 10h24
  4. Element suivant dans une boucle "Foreach"
    Par ganguill dans le forum Langage
    Réponses: 16
    Dernier message: 20/05/2010, 09h05
  5. Réponses: 0
    Dernier message: 09/06/2009, 13h15

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