Calculs conditionnels dans un formulaire

[Résolu]
Signaler
Messages postés
9
Date d'inscription
lundi 15 octobre 2007
Statut
Membre
Dernière intervention
23 octobre 2007
-
Messages postés
9
Date d'inscription
lundi 15 octobre 2007
Statut
Membre
Dernière intervention
23 octobre 2007
-
Bonjour,

J'ai un formulaire avec un champ texte Commentaire qui doit prendre en compte plusieurs données pour afficher le résultat voulu.
Comment faire pour que le calcul prenne en compte plusieurs variables ?

exemple :

function commente(imc) {
   if (imc>=22 && imc<23) {
   if (taille<160)
   if (form.sexe.value==2)
     return "Votre poids est correct mais vous êtes un peu enveloppé(e). Nous vous proposons un PROGRAMME 1 qui correspond à une perte de 3 à 5 kg." ;

Merci

Magali,
Perdue dans le code javascript

16 réponses

Messages postés
3426
Date d'inscription
lundi 26 décembre 2005
Statut
Membre
Dernière intervention
14 janvier 2011
18
Bonjour,

Il ne fallait pas reprendre telque mais



à toi d'adapter...










var Valeur; // Variable temporaire
if (form.sexe.value= =1){
  //-- Calcul
  Valeur = (form.taille.value - 100) - (form.taille.value-150) /4;
  //-- Affectation
  form.poidsID.value  = Math.round( Valeur *10) /10;





  //-- Calcul






  Valeur = 20 *(form.taille.value *form.taille.value) /10000;




  //-- Affectation





  form.poidsmini.value = Math.round( Valeur *10) /10;





  //-- Calcul






  Valeur = 25 *(form.taille.value *form.taille.value) /10000;




  //-- Affectation





  form.poidsmaxi.value = Math.round( Valeur *10) /10;





  //-- Calcul






  Valeur = form.poids.value *10000 /(form.taille.value *form.taille.value);




  //-- Affectation





  form.imc.value = Math.round( Valeur *10) /10;

...ETC....
voili....
 



;0)
Messages postés
13616
Date d'inscription
jeudi 13 février 2003
Statut
Membre
Dernière intervention
15 octobre 2013
36
Bonjour,


<hr size="2" width="100%" />
    if (imc>=22 && imc<23)
              {    if (taille<160)
                           {    if (form.sexe.value==2)
                                        {     les 3 conditions sont vraies   }
                                 else { les 2 1ères sont vraies }
                           }
                   else   {   la 1ère est vraie, pas la 2ème, la 3ème n'est pas testée }
              }
   else    { la 1ère n'est pas vraie, les 2 autres ne sont pas testées }

<hr size="2" width="100%" />
if ( imc>=22 && imc<23 && taille<160 && form.sexe.value==2 )
          {  les 3 conditions sont vraies   }
else   {   au moins une n'est pas vraie }

<hr size="2" width="100%" />


ça dépend donc de ce qu'on veut faire

regarder aussi du coté de  switch ( zone )
                                            {   case valeur_1:
                                                    traitement...
                                                    break;
                                                 case valeur_2:
                                                     ...
                                                 default:
                                            }
<hr />                Cordialement            Bul         [mon Site]     [M'écrire]
<hr />
Messages postés
9
Date d'inscription
lundi 15 octobre 2007
Statut
Membre
Dernière intervention
23 octobre 2007

Merci beaucoup, mais je ne m'en sort pas. Je n'arrive pas à ce que je veux.
Si je vous donne mon formulaire et mon script, pouvez-vous m'aider à trouver pourquoi cela ne marche pas ?

Encore merci de me donner un peu de votre temps, car de mon côté, je m'arrache les cheveux ...

Voici mon formulaire :




<form>
                 
          ----

                         
Taille (en cm) :
             

           ,
           
             
              ,
         
          ----

                         
Poids (en kg) :

           ,
           
             
              ,
         
          ----

                         
Sexe :

           ,
            Homme
             
              Femme
             
              ,
         
          ----

                         

               
               
               

           ,
         
          ----

                         
Poids idéal :
               

           ,
           
             
              kg
             

              ,
            Poids
              mini :
             
              kg

              ,
           
              Poids maxi :
             
              kg,
         
          ----

                         
IMC
                :

           ,
           
             
              ,
            Poids
              maximum &agrave; perdre
              :
             
              kg,
         
          ----

                         

           ,
         
          ----

                         

                COMMENTAIRES

               

                <textarea name= "commentaire" cols="50" rows="8"></textarea>
               

               

           ,
           
             

             

              ,
         
          ----

            ,
         
          ----

            &nbsp;,
         
          ----

            ,
           
          ----

            &nbsp;,
         
         
       

      </form>




Et voici mon script :




<script language ="Javascript">
<!--
function poidsIdeal(form) {

  if (form.sexe.value==1) {
     form.poidsID.value = (form.taille.value - 100) - (form.taille.value-150)/4 ;
     form.poidsmini.value = 20*(form.taille.value*form.taille.value)/10000 ;
     form.poidsmaxi.value = 25*(form.taille.value*form.taille.value)/10000 ;
     form.imc.value = form.poids.value * 10000/(form.taille.value*form.taille.value) ;    //arrondi 2 chiffres apres la virgule
     form.commentaire.value = commente(form.imc.value) ;
     form.maxiperte.value = (form.poids.value - form.poidsmini.value) ;
  }
  if (form.sexe.value==2) {
     form.poidsID.value = (form.taille.value - 100) - (form.taille.value-150)/2.5 ;
     form.poidsmini.value = 19*(form.taille.value*form.taille.value)/10000 ;
     form.poidsmaxi.value = 24*(form.taille.value*form.taille.value)/10000 ;
     form.imc.value = form.poids.value * 10000/(form.taille.value*form.taille.value) ;    //arrondi 2 chiffres apres la virgule
     form.commentaire.value = commente(form.imc.value) ;
     form.maxiperte.value = (form.poids.value - form.poidsmini.value) ;
      }
}
function changeSexe(form,sexe) {
   form.sexe.value = sexe ;

}
function calculImc(form) {
   form.imc.value = form.poids.value * 10000/(form.taille.value*form.taille.value) ;    //arrondi 2 chiffres apres la virgule
   form.commentaire.value = commente(form.imc.value) ;
}
function commente(imc) {
   if (imc<19) {
     return "Vous êtes maigre. Vous ne devez pas entreprendre de régime." ;
   }
   if (imc>=19 && imc<22) {
     return "Votre poids est correct. Vous n'avez pas besoin de perdre du poids." ;
     }
   if (imc>=22 && imc<23)
        { if (taille<160)
            { if (form.sexe.value==2)
     return "Votre poids est correct mais vous êtes un peu enveloppé(e). Nous vous proposons un PROGRAMME 1 qui correspond à une perte de 3 à 5 kg." ;
   }
   if (imc>=22 && imc<23)
        { if (taille>=160 && taille<175)
            { if (form.sexe.value==2)
     return "Votre poids est correct mais vous êtes un peu enveloppé(e). Nous vous proposons un PROGRAMME 2 qui correspond à une perte de 3 à 5 kg." ;
   }
   if (imc>=22 && imc<23)
        { if (taille>=175)
            { if (form.sexe.value==2)
     return "Votre poids est correct mais vous êtes un peu enveloppé(e). Nous vous proposons un PROGRAMME 3 qui correspond à une perte de 3 à 5 kg." ;
   }
   if (imc>=22 && imc<23)
        { if (taille<170)
            { if (form.sexe.value==1)
     return "Votre poids est correct mais vous êtes un peu enveloppé(e). Nous vous proposons un PROGRAMME 3 qui correspond à une perte de 3 à 5 kg." ;
   }
   if (imc>=22 && imc<23)
        { if (taille>=170 && taille<185)
            { if (form.sexe.value==1)
     return "Votre poids est correct mais vous êtes un peu enveloppé(e). Nous vous proposons un PROGRAMME 10 qui correspond à une perte de 3 à 5 kg." ;
   }
   if (imc>=22 && imc<23)
        { if (taille>=185)
            { if (form.sexe.value==1)
     return "Votre poids est correct mais vous êtes un peu enveloppé(e). Nous vous proposons un PROGRAMME 11 qui correspond à une perte de 3 à 5 kg." ;
   }
   if (imc>=23 && imc<25,5)
           { if (taille<160)
            { if (form.sexe.value==2)
     return "Vous êtes en surpoids. Nous vous proposons un PROGRAMME 4 qui correspond à une perte de 5 à 7 kg." ;
   }
   if (imc>=23 && imc<25,5)
           { if (taille>=160 && taille<175)
            { if (form.sexe.value==2)
     return "Vous êtes en surpoids. Nous vous proposons un PROGRAMME 5 qui correspond à une perte de 5 à 7 kg." ;
   }
   if (imc>=23 && imc<25,5)
           { if (taille>175)
            { if (form.sexe.value==2)
     return "Vous êtes en surpoids. Nous vous proposons un PROGRAMME 6 qui correspond à une perte de 5 à 7 kg." ;
   }
   if (imc>=23 && imc<25,5)
           { if (taille<170)
            { if (form.sexe.value==1)
     return "Vous êtes en surpoids. Nous vous proposons un PROGRAMME 6 qui correspond à une perte de 5 à 7 kg." ;
   }
   if (imc>=23 && imc<25,5)
           { if (taille>=170 && taille<185)
            { if (form.sexe.value==1)
     return "Vous êtes en surpoids. Nous vous proposons un PROGRAMME 12 qui correspond à une perte de 5 à 7 kg." ;
   }
   if (imc>=23 && imc<25,5)
           { if (taille>185)
            { if (form.sexe.value==1)
     return "Vous êtes en surpoids. Nous vous proposons un PROGRAMME 13 qui correspond à une perte de 5 à 7 kg." ;
   }
   if (imc>=25,5)
           { if (taille<160)
            { if (form.sexe.value==2)
     return "Vous êtes en surpoids excessif, vous devez perdre du poids pour votre santé. Nous vous proposons un PROGRAMME 7 qui correspond à une perte de 7 à 10 kg." ;
   }
   if (imc>=25,5)
           { if (taille>=160) && taille<175)
            { if (form.sexe.value==2)
     return "Vous êtes en surpoids excessif, vous devez perdre du poids pour votre santé. Nous vous proposons un PROGRAMME 8 qui correspond à une perte de 7 à 10 kg." ;
   }
   if (imc>=25,5)
           { if (taille<175)
            { if (form.sexe.value==2)
     return "Vous êtes en surpoids excessif, vous devez perdre du poids pour votre santé. Nous vous proposons un PROGRAMME 9 qui correspond à une perte de 7 à 10 kg." ;
   }
   if (imc>=25,5)
           { if (taille<170)
            { if (form.sexe.value==1)
     return "Vous êtes en surpoids excessif, vous devez perdre du poids pour votre santé. Nous vous proposons un PROGRAMME 9 qui correspond à une perte de 7 à 10 kg." ;
   }
   if (imc>=25,5)
           { if (taille>=170) && taille<185)
            { if (form.sexe.value==1)
     return "Vous êtes en surpoids excessif, vous devez perdre du poids pour votre santé. Nous vous proposons un PROGRAMME 14 qui correspond à une perte de 7 à 10 kg." ;
   }
   if (imc>=25,5)
           { if (taille<185)
            { if (form.sexe.value==1)
     return "Vous êtes en surpoids excessif, vous devez perdre du poids pour votre santé. Nous vous proposons un PROGRAMME 15 qui correspond à une perte de 7 à 10 kg." ;
   }
}
</script>




Magali,
Perdue dans le code javascript ....
Messages postés
13616
Date d'inscription
jeudi 13 février 2003
Statut
Membre
Dernière intervention
15 octobre 2013
36
ce n'est probablement pas une question javascript,    mais de logique.
    fait un schéma, résoud "en français"...   d'abord puis traduit en javascript.
<hr />                Cordialement            Bul         [mon Site]     [M'écrire]
<hr />
Messages postés
9
Date d'inscription
lundi 15 octobre 2007
Statut
Membre
Dernière intervention
23 octobre 2007

Merci, j'y travaille et je voie dans quel sens je peux retourner la question.

Magali,
Perdue dans le code javascript
Messages postés
9
Date d'inscription
lundi 15 octobre 2007
Statut
Membre
Dernière intervention
23 octobre 2007

Bonjour,

J'ai bien bossé et je sens que j'y suis presque.

Peux-tu me dire pourquoi ce script ne marche pas ? Où est la faute ?



function calculProg(form) {
    if (form.sexe.value==1) {
        if (form.taille.value<170) {
            if (form.perte.value<1) {
            form.commentaire.value = "Vous êtes parfait ainsi !"
            } else {
            if (form.perte.value>=1 && form.perte.value<3) {
            form.commentaire.value = "Le Programme Douceur est pour vous"
            } else {
            if (form.perte.value>=3 && form.perte.value<5) {
            form.commentaire.value = "Le Programme 3 est pour vous"
            } else {
            if (form.perte.value>=5 && form.perte.value<7) {
            form.commentaire.value = "Le Programme 6 est pour vous"
            } else {
            if (form.perte.value>=7) {
            form.commentaire.value = "Le programme 9 est pour vous"
            }
           }
        }
      }
    }
  }
}

    if (form.sexe.value==1) {
        if (form.taille.value>=170 && form.taille.value<185) {
            if (form.perte.value<1) {
            form.commentaire.value = "Vous êtes parfait ainsi !"
            } else {
            if (form.perte.value>=1 && form.perte.value<3) {
            form.commentaire.value = "Le Programme Douceur est pour vous"
            } else {
            if (form.perte.value>=3 && form.perte.value<5) {
            form.commentaire.value = "Le Programme 10 est pour vous"
            } else {
            if (form.perte.value>=5 && form.perte.value<7) {
            form.commentaire.value = "Le Programme 12 est pour vous"
            } else {
            if (form.perte.value>=7) {
            form.commentaire.value = "Le programme 14 est pour vous"
            }
           }
        }
      }
    }
  }
}

    if (form.sexe.value==1) {
        if (form.taille.value>185) {
            if (form.perte.value<1) {
            form.commentaire.value = "Vous êtes parfait ainsi !"
            } else {
            if (form.perte.value>=1 && form.perte.value<3) {
            form.commentaire.value = "Le Programme Douceur est pour vous"
            } else {
            if (form.perte.value>=3 && form.perte.value<5) {
            form.commentaire.value = "Le Programme 11 est pour vous"
            } else {
            if (form.perte.value>=5 && form.perte.value<7) {
            form.commentaire.value = "Le Programme 13 est pour vous"
            } else {
            if (form.perte.value>=7) {
            form.commentaire.value = "Le programme 15 est pour vous"
            }
           }
        }
      }
    }
  }
}

    if (form.sexe.value==2) {
        if (form.taille.value<160) {
            if (form.perte.value<1) {
            form.commentaire.value = "Vous êtes parfaite ainsi !"
            } else {
            if (form.perte.value>=1 && form.perte.value<3) {
            form.commentaire.value = "Le Programme Douceur est pour vous"
            } else {
            if (form.perte.value>=3 && form.perte.value<5) {
            form.commentaire.value = "Le Programme 1 est pour vous"
            } else {
            if (form.perte.value>=5 && form.perte.value<7) {
            form.commentaire.value = "Le Programme 4 est pour vous"
            } else {
            if (form.perte.value>=7) {
            form.commentaire.value = "Le programme 7 est pour vous"
            }
           }
        }
      }
    }
  }
}

    if (form.sexe.value==2) {
        if (form.taille.value>=160 && form.taille.value<175) {
            if (form.perte.value<1) {
            form.commentaire.value = "Vous êtes parfaite ainsi !"
            } else {
            if (form.perte.value>=1 && form.perte.value<3) {
            form.commentaire.value = "Le Programme Douceur est pour vous"
            } else {
            if (form.perte.value>=3 && form.perte.value<5) {
            form.commentaire.value = "Le Programme 2 est pour vous"
            } else {
            if (form.perte.value>=5 && form.perte.value<7) {
            form.commentaire.value = "Le Programme 5 est pour vous"
            } else {
            if (form.perte.value>=7) {
            form.commentaire.value = "Le programme 8 est pour vous"
            }
           }
        }
      }
    }
  }
}

    if (form.sexe.value==2) {
        if (form.taille.value>175) {
            if (form.perte.value<1) {
            form.commentaire.value = "Vous êtes parfaite ainsi !"
            } else {
            if (form.perte.value>=1 && form.perte.value<3) {
            form.commentaire.value = "Le Programme Douceur est pour vous"
            } else {
            if (form.perte.value>=3 && form.perte.value<5) {
            form.commentaire.value = "Le Programme 3 est pour vous"
            } else {
            if (form.perte.value>=5 && form.perte.value<7) {
            form.commentaire.value = "Le Programme 6 est pour vous"
            } else {
            if (form.perte.value>=7) {
            form.commentaire.value = "Le programme 9 est pour vous"
            }
           }
        }
      }
    }
  }
}
}

Merci beaucoup.

Magali,
Perdue dans le code javascript
Messages postés
3426
Date d'inscription
lundi 26 décembre 2005
Statut
Membre
Dernière intervention
14 janvier 2011
18
Bonjour,

Perso sans préjuger du reste j'aurai plutôt fait un truc du style

function calculProg(form) {
//-- Pour ameliorer la lisibilite
var Comment = "Vous êtes parfait ainsi !"
var Perte   = form.perte.value
var Taille  = form.taille.value;
  if( form.sexe.value==1) {
    if( Taille < 170){
      if( Perte >= 1)
        Comment = "Le Programme Douceur est pour vous"
      if( Perte >= 3)
        Comment = "Le Programme 3 est pour vous"
      if( Perte >= 5)
        Comment = "Le Programme 6 est pour vous"
      if( Perte >= 7)
        Comment = "Le programme 9 est pour vous"
    }
  }
...ETC....
  //-- On affecte a la fin
  form.commentaire.value =Comment;

à toi  de jouer...
 
 

;0)
Messages postés
13616
Date d'inscription
jeudi 13 février 2003
Statut
Membre
Dernière intervention
15 octobre 2013
36
moi je préfère :








if( form.sexe.value==1) {
    if( Taille < 170)
    {


if (Perte >= 7)
         Comment = "Le programme 9 est pour vous";

             else    { if (Perte >= 5)
                Comment = "Le Programme 6 est pour vous";
              else    { if (Perte >= 3)
                            Comment = "Le Programme 3 est pour vous";
                        else { if (Perte >= 1)
                                  Comment = "Le Programme Douceur est pour vous";
                             }
                      }
                       }
      }

mais bon, c'est rien que pour emmouscailler PetoleTeam.   ;o))

<hr />                Cordialement            Bul         [mon Site]     [M'écrire]<hr />
Messages postés
9
Date d'inscription
lundi 15 octobre 2007
Statut
Membre
Dernière intervention
23 octobre 2007

Bonjour et merci pour votre aide.

Pour emmouscailler Petole Team, ta version ne marche pas. Rien n'apparaît dans mon champs texte Commentaire.

Voici le script que j'ai écrit d'après tes conseils :




function calculProg(form) {

var Comment = "Vous êtes parfait ainsi !"
var Perte = form.perte.value
var Taille = form.taille.value ;
  if (form.sexe.value==1) {
    if (Taille<170){
      if (Perte>=1)
        Comment = "Le Programme Douceur est pour vous"
      if (Perte>=3)
        Comment = "Le Programme 3 est pour vous"
      if (Perte>=5)
        Comment = "Le Programme 6 est pour vous"
      if (Perte>=7)
        Comment = "Le programme 9 est pour vous"
    }
  }
  if (form.sexe.value==1) {
    if (Taille>=170){
      if (Perte>=1)
        Comment = "Le Programme Douceur est pour vous"
      if (Perte>=3)
        Comment = "Le Programme 10 est pour vous"
      if (Perte>=5)
        Comment = "Le Programme 12 est pour vous"
      if (Perte>=7)
        Comment = "Le programme 14 est pour vous"
    }
  }
  if (form.sexe.value==1) {
    if (Taille>=185){
      if (Perte>=1)
        Comment = "Le Programme Douceur est pour vous"
      if (Perte>=3)
        Comment = "Le Programme 11 est pour vous"
      if (Perte>=5)
        Comment = "Le Programme 13 est pour vous"
      if (Perte>=7)
        Comment = "Le programme 15 est pour vous"
    }
  }
  if (form.sexe.value==2) {
    if (Taille<160){
      if (Perte>=1)
        Comment = "Le Programme Douceur est pour vous"
      if (Perte>=3)
        Comment = "Le Programme 1 est pour vous"
      if (Perte>=5)
        Comment = "Le Programme 4 est pour vous"
      if (Perte>=7)
        Comment = "Le programme 7 est pour vous"
    }
  }
  if (form.sexe.value==2) {
    if (Taille>=160){
      if (Perte>=1)
        Comment = "Le Programme Douceur est pour vous"
      if (Perte>=3)
        Comment = "Le Programme 2 est pour vous"
      if (Perte>=5)
        Comment = "Le Programme 5 est pour vous"
      if (Perte>=7)
        Comment = "Le programme 8 est pour vous"
    }
  }
  if (form.sexe.value==2) {
    if (Taille>=175){
      if (Perte>=1)
        Comment = "Le Programme Douceur est pour vous"
      if (Perte>=3)
        Comment = "Le Programme 3 est pour vous"
      if (Perte>=5)
        Comment = "Le Programme 6 est pour vous"
      if (Perte>=7)
        Comment = "Le programme 9 est pour vous"
    }
  }
form.commentaire.value = Comment ;
}



Et pour emouscailler aussi Bultez (y'a pas de raison !), ta version ne marche pas non plus. Voici le script selon tes conseils :


function calculProg(form) {

var Perte = form.perte.value
var Taille = form.taille.value ;

  if (form.sexe.value==1) {
    if (Taille < 170) {
      if (Perte >= 7)
         Comment = "Le programme 9 est pour vous";
             else {if (Perte >= 5)
                Comment = "Le Programme 6 est pour vous";
                else {if (Perte >= 3)
                    Comment = "Le Programme 3 est pour vous";
                     else {if (Perte >= 1)
                           Comment = "Le Programme Douceur est pour vous";
                           }
                        }
                     }
                    }
               }
  if (form.sexe.value==1) {
    if (Taille >= 170) {
      if (Perte >= 7)
         Comment = "Le programme 14 est pour vous";
             else {if (Perte >= 5)
                Comment = "Le Programme 12 est pour vous";
                else {if (Perte >= 3)
                    Comment = "Le Programme 10 est pour vous";
                     else {if (Perte >= 1)
                           Comment = "Le Programme Douceur est pour vous";
                           }
                        }
                     }
                    }
               }
  if (form.sexe.value==1) {
    if (Taille >= 185) {
      if (Perte >= 7)
         Comment = "Le programme 15 est pour vous";
             else {if (Perte >= 5)
                Comment = "Le Programme 13 est pour vous";
                else {if (Perte >= 3)
                    Comment = "Le Programme 11 est pour vous";
                     else {if (Perte >= 1)
                           Comment = "Le Programme Douceur est pour vous";
                           }
                        }
                     }
                    }
               }
  if (form.sexe.value==2) {
    if (Taille < 160) {
      if (Perte >= 7)
         Comment = "Le programme 7 est pour vous";
             else {if (Perte >= 5)
                Comment = "Le Programme 4 est pour vous";
                else {if (Perte >= 3)
                    Comment = "Le Programme 1 est pour vous";
                     else {if (Perte >= 1)
                           Comment = "Le Programme Douceur est pour vous";
                           }
                        }
                     }
                    }
               }
  if (form.sexe.value==2) {
    if (Taille >= 160) {
      if (Perte >= 7)
         Comment = "Le programme 8 est pour vous";
             else {if (Perte >= 5)
                Comment = "Le Programme 5 est pour vous";
                else {if (Perte >= 3)
                    Comment = "Le Programme 2 est pour vous";
                     else {if (Perte >= 1)
                           Comment = "Le Programme Douceur est pour vous";
                           }
                        }
                     }
                    }
               }
  if (form.sexe.value==2) {
    if (Taille >= 175) {
      if (Perte >= 7)
         Comment = "Le programme 9 est pour vous";
             else {if (Perte >= 5)
                Comment = "Le Programme 6 est pour vous";
                else {if (Perte >= 3)
                    Comment = "Le Programme 3 est pour vous";
                     else {if (Perte >= 1)
                           Comment = "Le Programme Douceur est pour vous";
                           }
                        }
                     }
                    }
               }
form.commentaire.value = Comment ;
}




Où est l'erreur ? Merci, merci et merci.

Magali,
Perdue dans le code javascript
Messages postés
3426
Date d'inscription
lundi 26 décembre 2005
Statut
Membre
Dernière intervention
14 janvier 2011
18
Bonjour,
Traites nous de Blaireau pendant que tu y es...et tu auras RAISON car le problème est ailleurs, nous sommes en présence, me semble t-il, je ne me mouille plus, d'un problème de cohérence de données a comparer.
form.nom_du_champ.value retourne une STRING et non un ENTIER voir un FLOTTANT, donc...il faut convertir avant usage les comparaisons étant faite sur des nombres


var Perte   = parseFloat(form.perte.value); // conversion en flottant
var Taille  = parseFloat(form.taille.value);
// etc...pour les autres données à manipuler..




et moi qui pensais qu'il s'agissait d'un problème d'encapsulage de if, je lirais dorénavant le topic en plein.
PS : je me trompe peut être encore d'ailleurs...
 

;0)
Messages postés
9
Date d'inscription
lundi 15 octobre 2007
Statut
Membre
Dernière intervention
23 octobre 2007

Désolée, je ne voulais pas te vexer.  J'ai essayé ce que tu m'a recommandé, mais sans succès.
Je suis sûre moi aussi que c'est un problème de cohérence mais je vois pas où il se trouve.

Mon script prend en compte 3 conditions pour calculer la réponse à donner : la Taille, le Sexe et la Perte.

La Taille et le Sexe sont saisis dans un formulaire (données non calculées), par contre, la Perte est calculée grâce à un autre script (qui marche). La Perte est calculée en fonction de la Taille et du Poids (données non calculées).

J'ai associé les 2 scripts à 2 boutons différents. Est-ce cela qui peut poser problème ?

Magali,
Perdue dans le code javascript
Messages postés
3426
Date d'inscription
lundi 26 décembre 2005
Statut
Membre
Dernière intervention
14 janvier 2011
18
Bonjour,
Vexé Oui d'avoir laissé cela mais pour le reste...
Ce qui a été écrit avant reste vrai concernant les données à manipuler, néanmoins tu peux affecter à un bouton une multitude de fonction du type

le plus clair étant pour des raison de lisibilité de mettre une fonction qui regroupe les autres




avec une fonction comme ceci
function Fct_Calculer( form_){
  Fct_1( form_);

  Fct_1( form_);

  Fct_1( form_);
...etc...

  Fct_n( form_);





}



Autre chose pendant que l'on y est, évite d'utiliser des mots reservés comme paramètre ou comme variable, IE et FireFox ne les interpréteront pas forcément de la même manière, voila le pourquoi de this.form en paramètre des fonctions.
A toi de jouer et de nous dire... 
 
 




;0)
Messages postés
9
Date d'inscription
lundi 15 octobre 2007
Statut
Membre
Dernière intervention
23 octobre 2007

Bonjour,

Je suis arrivée à mes fins (enfin presque !) mais j'ai dû séparer mes 2 scripts. Ils fonctionnent, mais sur 2 pages différentes ... Sur la même page, il ya un conflit. OU ????

Bref, j'avance car mon patron me tanne.

J'ai encore une petite question. Comment arrondir mes résultats de calcul à 1 chiffre après la virgule ? A quel endroit de mon script (ci-dessous) je dois insérer cette fonction ? MERCI.

function poidsIdeal(form) {

  if (form.sexe.value==1) {
     form.poidsID.value = (form.taille.value - 100) - (form.taille.value-150)/4 ;
     form.poidsmini.value = 20*(form.taille.value*form.taille.value)/10000 ;
     form.poidsmaxi.value = 25*(form.taille.value*form.taille.value)/10000 ;
     form.imc.value = form.poids.value * 10000/(form.taille.value*form.taille.value) ;
     form.commentaire.value = commente(form.imc.value) ;
     form.maxiperte.value = (form.poids.value - form.poidsmini.value) ;
  }
  if (form.sexe.value==2) {
     form.poidsID.value = (form.taille.value - 100) - (form.taille.value-150)/2.5 ;
     form.poidsmini.value = 19*(form.taille.value*form.taille.value)/10000 ;
     form.poidsmaxi.value = 24*(form.taille.value*form.taille.value)/10000 ;
     form.imc.value = form.poids.value * 10000/(form.taille.value*form.taille.value) ;
     form.commentaire.value = commente(form.imc.value) ;
     form.maxiperte.value = (form.poids.value - form.poidsmini.value) ;
      }
}
function calculImc(form) {
   form.imc.value = form.poids.value * 10000/(form.taille.value*form.taille.value) ;
   }

A bientôt.

Magali,
Perdue dans le code javascript
Messages postés
3426
Date d'inscription
lundi 26 décembre 2005
Statut
Membre
Dernière intervention
14 janvier 2011
18
Bonjour,




il ya un conflit. OU ????


sans plus d'info, un lien ou le code pour voir, pas 3000 lignes quand même difficile de dire...

Comment arrondir mes résultats de calcul à 1 chiffre après la virgule ?


Pour arrondir un chiffre une des façons de procéder est l'utilisation de l'objet Math et de sa fonction round()

var Nombre = 125.46;                       // le nombre
var Resullt = Math.round( Nombre *10) /10; // une decimale
alert( Result);                            //affichage



à toi d'adapter...
 



;0)
Messages postés
9
Date d'inscription
lundi 15 octobre 2007
Statut
Membre
Dernière intervention
23 octobre 2007

Merci.

Bon, ce que j'ai écrit ne marche pas. Mon script ne marche plus du tout. J'ai dû faire des erreurs : où ?

function poidsIdeal(form) {

  if (form.sexe.value==1) {
     form.poidsID.value = (form.taille.value - 100) - (form.taille.value-150)/4 ;
     var poidsID = form.poidsID.value ;
     var Result = Math.round(poidsID*10)/10 ;
     alert(Result) ;
     
     form.poidsmini.value = 20*(form.taille.value*form.taille.value)/10000 ;
     var poidsmini = form.poidsmini.value ;
     var Result = Math.round(poidsmini*10)/10 ;
     alert(Result) ;
     
     form.poidsmaxi.value = 25*(form.taille.value*form.taille.value)/10000 ;
     var poidsmaxi = form.poidsmaxi.value ;
     var Result = Math.round(poidsmaxi*10)/10 ;
     alert(Result) ;
     
     form.imc.value = form.poids.value * 10000/(form.taille.value*form.taille.value) ;
     var imc = form.imc.value ;
     var Result = Math.round(imc*10)10 ;
     alert(Result) ;
     
     form.maxiperte.value = (form.poids.value - form.poidsmini.value) ;
     var maxiperte = form.maxiperte.value ;
     var Result = Math.round(maxiperte*10)10 ;
     alert(Result) ;
     
     form.commentaire.value = commente(form.imc.value) ;
  }
  if (form.sexe.value==2) {
     form.poidsID.value = (form.taille.value - 100) - (form.taille.value-150)/2.5 ;
     var poidsID = form.poidsID.value ;
     var Result = Math.round(poidsID*10)/10 ;
     alert(Result) ;
     
     form.poidsmini.value = 19*(form.taille.value*form.taille.value)/10000 ;
     var poidsmini = form.poidsmini.value ;
     var Result = Math.round(poidsmini*10)/10 ;
     alert(Result) ;
     
     form.poidsmaxi.value = 24*(form.taille.value*form.taille.value)/10000 ;
     var poidsmaxi = form.poidsmaxi.value ;
     var Result = Math.round(poidsmaxi*10)/10 ;
     alert(Result) ;
     
     form.imc.value = form.poids.value * 10000/(form.taille.value*form.taille.value) ;
     var imc = form.imc.value ;
     var Result = Math.round(imc*10)10 ;
     alert(Result) ;
     
     form.maxiperte.value = (form.poids.value - form.poidsmini.value) ;
     var maxiperte = form.maxiperte.value ;
     var Result = Math.round(maxiperte*10)10 ;
     alert(Result) ;
     
     form.commentaire.value = commente(form.imc.value) ;
      }
}

Magali,
Perdue dans le code javascript
Messages postés
9
Date d'inscription
lundi 15 octobre 2007
Statut
Membre
Dernière intervention
23 octobre 2007

MERCI, ça marche ! Comme dirait l'autre "EUREKA" !

A bientôt.

Magali,
Perdue dans le code javascript