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 04/10/2011, 14h31   #1
Membre habitué
 
Inscription : juillet 2004
Messages : 254
Détails du profil
Informations personnelles :
Localisation : France, Loire Atlantique (Pays de la Loire)

Informations forums :
Inscription : juillet 2004
Messages : 254
Points : 114
Points : 114
Par défaut Test d'une fonction qui retourne un booléen

Bonjour

J'ai développé machin une fonction qui retourne "true" ou "false" selon les cas.

Pour son utilisation, si je fais
Code :
1
2
 
if (!machin('1')) { ....}
cela fonctionne (au sens où le code sous condition est exécuté) sur mon poste et sur d'autres, mais bizarrement pas sur d'autres postes dans mon entreprise, qui ont pourtant la meme verson d'IE et de FX que moi, cad que la condition négative n'est jamais levée alors qu'elle devrait l'être.

J'ai résolu le problème en écrivant différemment :
Code :
1
2
 
if ( false==machin('1') ) { ... }
et ce code fonctionne partout, mais j'aimerais quand même comprendre pourquoi la 1ère version n'est pas fiable.

Merci
Loko est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/10/2011, 14h37   #2
Rédacteur/Modérateur
 
Avatar de SpaceFrog
 
Homme
Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Analyste Programmeur
Inscription : mars 2002
Messages : 30 040
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : Royaume-Uni

Informations professionnelles :
Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Analyste Programmeur
Secteur : Industrie

Informations forums :
Inscription : mars 2002
Messages : 30 040
Points : 45 141
Points : 45 141
il eut été de meilleur aloi de nous montrer la fonction qui retourne le true ou le false ?
__________________
Ma page 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


réalisations :www.planet-languages.com|www.saftair.com| www.ouestisol.fr | www.sebemex.fr | www.extramiante.fr | www.sistac-alizay.fr | www.acoustishop.fr | www.litt.fr | www.ouestventil.fr
SpaceFrog est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/10/2011, 14h58   #3
Membre habitué
 
Inscription : juillet 2004
Messages : 254
Détails du profil
Informations personnelles :
Localisation : France, Loire Atlantique (Pays de la Loire)

Informations forums :
Inscription : juillet 2004
Messages : 254
Points : 114
Points : 114
Soite :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
 
function getDateFR(strDate)
{	  
 day = strDate.substring(0,2);
 month = strDate.substring(3,5);
 year = strDate.substring(6,10);
 return(new Date(month+"/"+day+"/"+year));
}
 
// Check_Date() : vérifie les dates saisies manuellement
function Check_Date(champDate)
{	  
  if (champDate.value.length<=0) return true;
 
  var ld = new Date;
  var ld_temp = getDateFR(champDate.value);
  if (ld_temp<ld) {
  	alert('Date incorrecte '+champDate.value);
	return false;
  }
 
  return true;
}
(la fonction en question étant bien sûr la 2ème)
Loko est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/10/2011, 19h35   #4
Modérateur
 
Avatar de NoSmoking
 
Homme
Inscription : janvier 2011
Messages : 2 944
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Isère (Rhône Alpes)

Informations forums :
Inscription : janvier 2011
Messages : 2 944
Points : 4 776
Points : 4 776
Bonjour,
Code :
if (champDate.value.length<=0) return true;
la traduction donne
SI la longueur de la saisie est INFERIEURE ou EGALE à ZERO on retourne VRAI

- Pour le inférieure je pense que c'est inutile!
- en règle générale on retourne false quand la saisie est vide

...mais se ne sont que quelques remarques...
NoSmoking est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/10/2011, 08h41   #5
Membre habitué
 
Inscription : juillet 2004
Messages : 254
Détails du profil
Informations personnelles :
Localisation : France, Loire Atlantique (Pays de la Loire)

Informations forums :
Inscription : juillet 2004
Messages : 254
Points : 114
Points : 114
Bonjour

Oui, le "inférieur" était inutile, bon ...

Dans le cas qui m'occupe, une saisie vide est autorisée donc je retourne true.

Mais cela ne répond pas du tout à ma question, en fait ..
Loko est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/10/2011, 00h48   #6
Membre Expert
 
Avatar de Willpower
 
Homme Boris Dessy
sans emploi
Inscription : décembre 2010
Messages : 871
Détails du profil
Informations personnelles :
Nom : Homme Boris Dessy
Localisation : Belgique

Informations professionnelles :
Activité : sans emploi

Informations forums :
Inscription : décembre 2010
Messages : 871
Points : 1 380
Points : 1 380
Citation:
Envoyé par Loko Voir le message
Bonjour

J'ai développé machin une fonction qui retourne "true" ou "false" selon les cas.

Pour son utilisation, si je fais
Code :
1
2
 
if (!machin('1')) { ....}
cela fonctionne (au sens où le code sous condition est exécuté) sur mon poste et sur d'autres, mais bizarrement pas sur d'autres postes dans mon entreprise, qui ont pourtant la meme verson d'IE et de FX que moi, cad que la condition négative n'est jamais levée alors qu'elle devrait l'être.

J'ai résolu le problème en écrivant différemment :
Code :
1
2
 
if ( false==machin('1') ) { ... }
et ce code fonctionne partout, mais j'aimerais quand même comprendre pourquoi la 1ère version n'est pas fiable.

Merci
Rejeté ! Ton bug n'a aucun sens !

Peux-tu nous envoyer la page complète (si elle n'a rien de confidentiel ) ? car le bug se situe sans doute encore ailleurs. (je ne vois que ça.)

Sinon peux tu nous confirmer que chez tes collègues ça affiche bien le "alert('Date incorrecte '+champDate.value);" mais pas la première instruction qui suit la condition (par exemple en y plaçant un alert).

Par simple curiosité que donne :
Code :
1
2
 
if ( 1-machin('1') ) { ... }
ou
Code :
1
2
 
f ( !(machin('1')) ) { ... }
et encore
Code :
1
2
 
f ( !false) { ... }
chez tes collègues ?
Willpower est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/10/2011, 20h40   #7
Modérateur
 
Avatar de NoSmoking
 
Homme
Inscription : janvier 2011
Messages : 2 944
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Isère (Rhône Alpes)

Informations forums :
Inscription : janvier 2011
Messages : 2 944
Points : 4 776
Points : 4 776
perso je ferait une comparaison sur Date().getTime, comparaison qui se ferait sur un number et non un object ld_temp.getTime() < ld.getTime()
NoSmoking est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 04h08.


 
 
 
 
Partenaires

Hébergement Web