Précédent   Forum des professionnels en informatique > Webmasters - Développement Web > JavaScript
JavaScript Forum programmation JavaScript. Lire : Cours JavaScript, FAQ JavaScript, Toutes les FAQ JavaScript et Sources JavaScript
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 29/04/2011, 12h02   #1
Invité régulier
 
azer mery
Inscription : avril 2010
Messages : 20
Détails du profil
Informations personnelles :
Nom : azer mery

Informations forums :
Inscription : avril 2010
Messages : 20
Points : 5
Points : 5
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 :
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 :
<input type="button" onclick="return verif_valid_nb_jour(date1,date2,jour_rec,'<')" value="calculer nb jour" />
et dans ma fonction mettre :

Code :
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
meryazer est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/04/2011, 19h19   #2
Modérateur
 
Avatar de NoSmoking
 
Homme
Inscription : janvier 2011
Messages : 2 933
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Isère (Rhône Alpes)

Informations forums :
Inscription : janvier 2011
Messages : 2 933
Points : 4 756
Points : 4 756
Bonsoir,
ce que tu peux faire c'est d'utiliser l'opérateur switch
Code :
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,  '<');
NoSmoking est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/05/2011, 10h01   #3
Invité régulier
 
azer mery
Inscription : avril 2010
Messages : 20
Détails du profil
Informations personnelles :
Nom : azer mery

Informations forums :
Inscription : avril 2010
Messages : 20
Points : 5
Points : 5
Bonjour,

merci NoSmoking.
meryazer est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/05/2011, 11h44   #4
Membre Expert
 
Avatar de Loceka
 
Tlouye Ci
Inscription : mars 2004
Messages : 1 450
Détails du profil
Informations personnelles :
Nom : Tlouye Ci

Informations forums :
Inscription : mars 2004
Messages : 1 450
Points : 2 149
Points : 2 149
Tu peux aussi passer une fonction en paramètre :
Code :
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.
Loceka est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 08h50.


 
 
 
 
Partenaires

Hébergement Web