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 :

passer operateur de comparaison comme paramètre d'une fonction js


Sujet :

JavaScript

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Avril 2010
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 20
    Par défaut passer operateur de comparaison comme paramètre d'une fonction js
    Bonjour ,

    j'ai un bout de code qui permet de comparer le nombre de jour entre deux date et un autre nombre donné par l'utilisateur, ce code marche :

    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
    35
    36
    37
    38
    39
    40
    41
    42
    43
    <html>
    <head>
    <title> calculer</title>
    <script type="text/javascript">
    function temps(date)
    {
    var d = new Date(date[2], date[1] - 1, date[0]);
    return d.getTime();
    }
    function calculer(date1,date2)
    {
    var date1=date1.value
    var date2=date2.value
    var debut = temps(date1.split("/"));
    var fin = temps(date2.split("/"));
    var nb = (fin - debut) / (1000 * 60 * 60 * 24); // + " jours";
    document.forms['form1'].elements['jour'].value=nb;
    return nb;
    }
    function verif_valid_nb_jour(date1,date2,nombre)
    {
    var nb=calculer(date1,date2);
    var nombre=nombre.value
    if(nb > nombre)
    {
    document.forms['form1'].elements['etat'].value='false';
    }
    else
    {
    document.forms['form1'].elements['etat'].value='true';
    }
    }
    </script>
    </head>
    <body>
    <form method="post" action="reservation.php" name="form1">
    Date1 : <input type="text" name="date1" /><br /><br />
    Date2 : <input type="text" name="date2" /><br /><br />
    nombre jour recommandé : : <input type="text" name="jour_rec" /><br /><br />
    nombre jour réel : : <input type="text" name="jour" value="0" readonly /><br /><br />
    etat : : <input type="text" name="etat" value="0" readonly /><br /><br />
    <input type="button" onclick="return verif_valid_nb_jour(date1,date2,jour_rec)" value="calculer nb jour" />
    </form></body></html>
    maintenant ce que je veux c'est donné la possibilité à l'utilisateur de choisir l'opérateur de comparaison. càd mettre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <input type="button" onclick="return verif_valid_nb_jour(date1,date2,jour_rec,'<')" value="calculer nb jour" />
    et dans ma fonction mettre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    function verif_valid_nb_jour(date1,date2,nombre,operateur)
    {
    var nb=calculer(date1,date2);
    var nombre=nombre.value
    if(nb operateur nombre)
    {
    document.forms['form1'].elements['etat'].value='false';
    }
    else
    {
    document.forms['form1'].elements['etat'].value='true';
    }
    }
    ce dernier code ne marche pas, est ce que vous avez des idées?

    merci d'avance

  2. #2
    Modérateur

    Avatar de NoSmoking
    Homme Profil pro
    Inscrit en
    Janvier 2011
    Messages
    17 210
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 17 210
    Par défaut
    Bonsoir,
    ce que tu peux faire c'est d'utiliser l'opérateur switch
    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 fctCompare( nb_1, nb_2, operateur){
      switch ( operateur){
        case '>' :
          if( nb_1 > nb_2){
            alert( nb_1 +' est SUPERIEUR a ' +nb_2);
          }
          break;
        case '<' :
          if( nb_1 < nb_2){
            alert( nb_1 +' est INFERIEUR a ' +nb_2);
          }
          break;
        default : ;
      }
    }
    fctCompare( 100, 80, '>');
    fctCompare( 10, 80,  '<');

  3. #3
    Membre averti
    Inscrit en
    Avril 2010
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 20
    Par défaut
    Bonjour,

    merci NoSmoking.

  4. #4
    Membre Expert
    Avatar de Loceka
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    2 276
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 2 276
    Par défaut
    Tu peux aussi passer une fonction en paramètre :
    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
    function compare1(o1, o2) {
      return o1 < o2;
    }
    function compare2(o1, o2) {
      return o1 >= o2;
    }
    function compare3(o1, o2) {
      return o1 === o2;
    }
     
    function verif_valid_nb_jour(date1,date2,nombre,comparateur) {
      var nb=calculer(date1,date2);
      var nombre=nombre.value;
      if (comparateur(nb, nombre)) {
        document.forms['form1'].elements['etat'].value='false';
      } else {
        document.forms['form1'].elements['etat'].value='true';
      }
    }
     
    // Appel de la fonction :
    verif_valid_nb_jour("11/11/2011", "11/12/2011", jour_rec, compare1);
    L'avantage de cette méthode étant que tu peux définir des méthodes de comparaison plus complexes qu'un simple opérateur.

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 17/10/2014, 16h08
  2. Réponses: 7
    Dernier message: 25/04/2010, 21h56
  3. Passage d'une variable comme paramètre d'une fonction
    Par lowman dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 17/10/2007, 15h12
  4. Passer une matrice comme paramètre d'une fonction
    Par Rniamo dans le forum Langage
    Réponses: 8
    Dernier message: 16/07/2006, 20h55
  5. fonction comme paramètre d'une fonction
    Par velociraptor5679 dans le forum C++
    Réponses: 8
    Dernier message: 17/06/2006, 18h19

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