Partage
  • Partager sur Facebook
  • Partager sur Twitter

Multiplié plusieurs truc en même temps.

    28 novembre 2011 à 12:42:35

    Salut à tous,

    Je souhaiterai que sa calcule marche, 1x2x3x4x5x6x7x8x9=TOTAL
    Voici les codes que j'ai sur ma page HTML pouvez vous me dire qu'est ce qu'il cloche?

    Merci de l'aide donné.


    function calcul()
    { 
     var x = document.getElementById('nb1').value;
     var y = document.getElementById('nb2').value;
     var a = document.getElementById('nb3').value; 
     var b = document.getElementById('nb4').value; 
     var c = document.getElementById('nb5').value; 
     var d = document.getElementById('nb6').value; 
     var e = document.getElementById('nb7').value; 
     var f = document.getElementById('nb8').value;
     var g = document.getElementById('nb9').value;
     var total = document.getElementById('total');
       if(x != 0 && y != 0 && a != 0 && b != 0 && c != 0 && d != 0 && e != 0 && f != 0 && g != 0) 
       {
       var nb_1 = ~x.indexOf(",") ? x.replace(",", ".") : x;
       var nb_2 = ~y.indexOf(",") ? y.replace(",", ".") : y;
       var nb_3 = ~a.indexOf(",") ? a.replace(",", ".") : a;   
       var nb_4 = ~b.indexOf(",") ? b.replace(",", ".") : b;   
       var nb_5 = ~c.indexOf(",") ? c.replace(",", ".") : c;   
       var nb_6 = ~d.indexOf(",") ? d.replace(",", ".") : d;   
       var nb_7 = ~e.indexOf(",") ? e.replace(",", ".") : e;   
       var nb_8 = ~f.indexOf(",") ? f.replace(",", ".") : f;
       var nb_9 = ~g.indexOf(",") ? g.replace(",", ".") : g;
       total.value = nb_1 * nb_2 * nb_3 * nb_4 * nb_5 * nb_6 * nb_7 * nb_8 * nb_9; 	 
       } 
       else
       {
       alert('Vous n\'avez pas entre de nombre ou leur valeur est nulle');
       }
    }
    


    <p><input type="text" id="nb1" onfocus="select()" value="Longeur" style="width:80px" />M 
    x
    <input type="text" id="nb2" onfocus="select()" value="Largeur" style="width:80px" />M 
    x
    <input type=checkbox id="nb3" onfocus="select()" value="2">argent</input> 
    x
    <input type=checkbox id="nb4" onfocus="select()" value="2">bronze</input>
    x
    <input type=checkbox id="nb5" onfocus="select()" value="2">gris</input> 
    =
    <input type="texte" id="total" onfocus="select()" value="Résultat" />
    </p>
    
    • Partager sur Facebook
    • Partager sur Twitter
      28 novembre 2011 à 13:39:22

      nb6 7 8 et 9 n'existe pas ?
      • Partager sur Facebook
      • Partager sur Twitter
      Never Trust User Input This is the truth
        28 novembre 2011 à 13:43:32

        Si par la suite. je suis obliger de les mettre?
        • Partager sur Facebook
        • Partager sur Twitter
          28 novembre 2011 à 13:58:45

          tel que tu a fait ton JS oui tu est obligé.

          Ou alors tu véréfie que s'il existe pas tu les met a 1 (multiplication par 1 ne vas pas changer le résultat !!!)
          et apres tu fait ton calcul.

          var x = document.getElementById('nb1').value;
           var y = document.getElementById('nb2').value;
          //ici si y n'existe pas et que x vaut 10
          total = x*y;
          // total est égal à NaN
          // explication : 10*'undefined' = NaN; (NaN => Not a Number => Pas un Nombre)
          // maintenant on vérifie
          if (typeof(x) == 'undefined'){
              x=1
          }
          if (typeof(y) == 'undefined'){
              y=1
          }
          
          //si y existe pas et que x vaut dix 
          total = x*y;
          //total vaut 10
          //10*1 = 10
          

          • Partager sur Facebook
          • Partager sur Twitter
          Never Trust User Input This is the truth
            28 novembre 2011 à 14:10:19

            Merci j'ai un résulté mais je ne comprend comment 2x2 ne fait pas 4 mais 512??

            Surement à cause des choses qu'ils doivent être cocher : http://www.miroiteriesurmesure.com/devis/site.html

            <p><input type="text" id="nb1" onfocus="select()" value="Longeur" style="width:80px" />M 
            x
            <input type="text" id="nb2" onfocus="select()" value="Largeur" style="width:80px" />M 
            x
            <input type=checkbox id="nb3" onfocus="select()" value="2">argent</input> 
            x
            <input type=checkbox id="nb4" onfocus="select()" value="2">bronze</input>
            x
            <input type=checkbox id="nb5" onfocus="select()" value="2">gris</input> 
            x
            <input type=checkbox id="nb6" onfocus="select()" value="2">la</input>
            x
            <input type=checkbox id="nb7" onfocus="select()" value="2">la</input>
            x
            <input type=checkbox id="nb8" onfocus="select()" value="2">la</input>
            x
            <input type=checkbox id="nb9" onfocus="select()" value="2">la</input>
            =
            <input type="texte" id="total" onfocus="select()" value="Résultat" />
            


            Comment rendre le résulté correcte?
            Chaque truc à coché = à 2.

            Longueur x Largeur x 2 ou Longueur x Largeur x 2 x 2 x2....

            Merci.
            • Partager sur Facebook
            • Partager sur Twitter
              28 novembre 2011 à 14:52:26

              Number(total.value) = Number(nb_1)*Number(nb_2)*Number(nb_3);

              La fonction Number() permet de bien préciser a JS que tu vas faire des action sur des chiffres !!!
              • Partager sur Facebook
              • Partager sur Twitter
              Never Trust User Input This is the truth
                28 novembre 2011 à 15:02:20

                Elle y est cette phrase :

                total.value = nb_1 * nb_2 * nb_3 * nb_4 * nb_5 * nb_6 * nb_7 * nb_8 * nb_9;
                


                function calcul()
                { 
                 var x = document.getElementById('nb1').value;
                 var y = document.getElementById('nb2').value;
                 var a = document.getElementById('nb3').value; 
                 var b = document.getElementById('nb4').value; 
                 var c = document.getElementById('nb5').value; 
                 var d = document.getElementById('nb6').value; 
                 var e = document.getElementById('nb7').value; 
                 var f = document.getElementById('nb8').value;
                 var g = document.getElementById('nb9').value;
                 var total = document.getElementById('total');
                   if(x != 0 && y != 0 && a != 0 && b != 0 && c != 0 && d != 0 && e != 0 && f != 0 && g != 0) 
                   {
                   var nb_1 = ~x.indexOf(",") ? x.replace(",", ".") : x;
                   var nb_2 = ~y.indexOf(",") ? y.replace(",", ".") : y;
                   var nb_3 = ~a.indexOf(",") ? a.replace(",", ".") : a;   
                   var nb_4 = ~b.indexOf(",") ? b.replace(",", ".") : b;   
                   var nb_5 = ~c.indexOf(",") ? c.replace(",", ".") : c;   
                   var nb_6 = ~d.indexOf(",") ? d.replace(",", ".") : d;   
                   var nb_7 = ~e.indexOf(",") ? e.replace(",", ".") : e;   
                   var nb_8 = ~f.indexOf(",") ? f.replace(",", ".") : f;
                   var nb_9 = ~g.indexOf(",") ? g.replace(",", ".") : g;
                   total.value = nb_1 * nb_2 * nb_3 * nb_4 * nb_5 * nb_6 * nb_7 * nb_8 * nb_9; 	 
                   Number(total.value) = Number(nb_1)*Number(nb_2)*Number(nb_3)*Number(nb_4)*Number(nb_5)*Number(nb_6)*Number(nb_7)*Number(nb_8)*Number(nb_9);   
                   } 
                   else
                   {
                   alert('Vous n\'avez pas entre de nombre ou leur valeur est nulle');
                   }
                }
                
                var x = document.getElementById('nb1').value;
                var y = document.getElementById('nb2').value;
                //ici si y n'existe pas et que x vaut 10
                total = x*y;
                // total est égal à NaN
                // explication : 10*'undefined' = NaN; (NaN => Not a Number => Pas un Nombre)
                // maintenant on vérifie
                if (typeof(x) == 'undefined'){
                    x=1
                }
                if (typeof(y) == 'undefined'){
                    y=1
                }
                
                //si y existe pas et que x vaut dix 
                total = x*y;
                //total vaut 10
                //10*1 = 10
                


                Le résulté donne la même chose 512 au lieu de 4. (2x2)

                merci
                • Partager sur Facebook
                • Partager sur Twitter
                  28 novembre 2011 à 15:13:22

                  essaye ça
                  y = 1;
                  x = 1;
                  total = 0;
                  for (i=1;i<=9;i++){
                    x = document.getElementById('nb'+i).value;
                    if((typeof(x) === 'number' || typeof(x) === 'string') && x !== '' && !isNaN(x)){
                      total = total + (x*y)*1.0;
                      y = x;
                    }
                  }
                  alert(total);
                  
                  • Partager sur Facebook
                  • Partager sur Twitter
                  Never Trust User Input This is the truth
                    28 novembre 2011 à 15:16:16

                    Le résultat reste le même.
                    C'est bizarre http://www.miroiteriesurmesure.com/devis/site.html

                    function calcul()
                    { 
                     var x = document.getElementById('nb1').value;
                     var y = document.getElementById('nb2').value;
                     var a = document.getElementById('nb3').value; 
                     var b = document.getElementById('nb4').value; 
                     var c = document.getElementById('nb5').value; 
                     var d = document.getElementById('nb6').value; 
                     var e = document.getElementById('nb7').value; 
                     var f = document.getElementById('nb8').value;
                     var g = document.getElementById('nb9').value;
                     var total = document.getElementById('total');
                       if(x != 0 && y != 0 && a != 0 && b != 0 && c != 0 && d != 0 && e != 0 && f != 0 && g != 0) 
                       {
                       var nb_1 = ~x.indexOf(",") ? x.replace(",", ".") : x;
                       var nb_2 = ~y.indexOf(",") ? y.replace(",", ".") : y;
                       var nb_3 = ~a.indexOf(",") ? a.replace(",", ".") : a;   
                       var nb_4 = ~b.indexOf(",") ? b.replace(",", ".") : b;   
                       var nb_5 = ~c.indexOf(",") ? c.replace(",", ".") : c;   
                       var nb_6 = ~d.indexOf(",") ? d.replace(",", ".") : d;   
                       var nb_7 = ~e.indexOf(",") ? e.replace(",", ".") : e;   
                       var nb_8 = ~f.indexOf(",") ? f.replace(",", ".") : f;
                       var nb_9 = ~g.indexOf(",") ? g.replace(",", ".") : g;
                       total.value = nb_1 * nb_2 * nb_3 * nb_4 * nb_5 * nb_6 * nb_7 * nb_8 * nb_9; 	 
                       Number(total.value) = Number(nb_1)*Number(nb_2)*Number(nb_3)*Number(nb_4)*Number(nb_5)*Number(nb_6)*Number(nb_7)*Number(nb_8)*Number(nb_9);   
                       } 
                       else
                       {
                       alert('Vous n\'avez pas entre de nombre ou leur valeur est nulle');
                       }
                    }
                    
                    y = 1;
                    x = 1;
                    total = 0;
                    for (i=1;i<=9;i++){
                      x = document.getElementById('nb'+i).value;
                      if((typeof(x) === 'number' || typeof(x) === 'string') && x !== '' && !isNaN(x)){
                        total = total + (x*y)*1.0;
                        y = x;
                      }
                    }
                    alert(total);
                    
                    • Partager sur Facebook
                    • Partager sur Twitter
                      28 novembre 2011 à 15:23:48



                      function calcul()
                      { 
                      if (false){
                         var x = document.getElementById('nb1').value;
                         var y = document.getElementById('nb2').value;
                         var a = document.getElementById('nb3').value; 
                         var b = document.getElementById('nb4').value; 
                         var c = document.getElementById('nb5').value; 
                         var d = document.getElementById('nb6').value; 
                         var e = document.getElementById('nb7').value; 
                         var f = document.getElementById('nb8').value;
                         var g = document.getElementById('nb9').value;
                         var total = document.getElementById('total');
                         if(x != 0 && y != 0 && a != 0 && b != 0 && c != 0 && d != 0 && e != 0 && f != 0 && g != 0) 
                         {
                         var nb_1 = ~x.indexOf(",") ? x.replace(",", ".") : x;
                         var nb_2 = ~y.indexOf(",") ? y.replace(",", ".") : y;
                         var nb_3 = ~a.indexOf(",") ? a.replace(",", ".") : a;   
                         var nb_4 = ~b.indexOf(",") ? b.replace(",", ".") : b;   
                         var nb_5 = ~c.indexOf(",") ? c.replace(",", ".") : c;   
                         var nb_6 = ~d.indexOf(",") ? d.replace(",", ".") : d;   
                         var nb_7 = ~e.indexOf(",") ? e.replace(",", ".") : e;   
                         var nb_8 = ~f.indexOf(",") ? f.replace(",", ".") : f;
                         var nb_9 = ~g.indexOf(",") ? g.replace(",", ".") : g;
                         total.value = nb_1 * nb_2 * nb_3 * nb_4 * nb_5 * nb_6 * nb_7 * nb_8 * nb_9; 	 
                         Number(total.value) = Number(nb_1)*Number(nb_2)*Number(nb_3)*Number(nb_4)*Number(nb_5)*Number(nb_6)*Number(nb_7)*Number(nb_8)*Number(nb_9);   
                         } 
                         else
                         {
                         alert('Vous n\'avez pas entre de nombre ou leur valeur est nulle');
                         }
                      }
                      else{
                         y = 1;
                         x = 1;
                         total = 0;
                          for (i=1;i<=9;i++){
                            x = document.getElementById('nb'+i).value;
                            if((typeof(x) === 'number' || typeof(x) === 'string') && x !== '' && !isNaN(x)){
                              total = total + (x*y)*1.0;
                              y = x;
                            }
                          }
                          alert(total);
                      }
                      


                      Forcement tu n'execute pas le bout de code que j'ai fait si tu le place l'a ou tu l'a mis...

                      Place le comme je viens de le faire

                      if (false){
                      //Ton code
                      }
                      else {
                      //Mon code
                      }
                      • Partager sur Facebook
                      • Partager sur Twitter
                      Never Trust User Input This is the truth
                        28 novembre 2011 à 15:32:31

                        D'accord, merci

                        Y'a aucun résultat. http://www.miroiteriesurmesure.com/devis/site.html

                        function calcul()
                        { 
                        if (false){
                           var x = document.getElementById('nb1').value;
                           var y = document.getElementById('nb2').value;
                           var a = document.getElementById('nb3').value; 
                           var b = document.getElementById('nb4').value; 
                           var c = document.getElementById('nb5').value; 
                           var d = document.getElementById('nb6').value; 
                           var e = document.getElementById('nb7').value; 
                           var f = document.getElementById('nb8').value;
                           var g = document.getElementById('nb9').value;
                           var total = document.getElementById('total');
                           if(x != 0 && y != 0 && a != 0 && b != 0 && c != 0 && d != 0 && e != 0 && f != 0 && g != 0) 
                           {
                           var nb_1 = ~x.indexOf(",") ? x.replace(",", ".") : x;
                           var nb_2 = ~y.indexOf(",") ? y.replace(",", ".") : y;
                           var nb_3 = ~a.indexOf(",") ? a.replace(",", ".") : a;   
                           var nb_4 = ~b.indexOf(",") ? b.replace(",", ".") : b;   
                           var nb_5 = ~c.indexOf(",") ? c.replace(",", ".") : c;   
                           var nb_6 = ~d.indexOf(",") ? d.replace(",", ".") : d;   
                           var nb_7 = ~e.indexOf(",") ? e.replace(",", ".") : e;   
                           var nb_8 = ~f.indexOf(",") ? f.replace(",", ".") : f;
                           var nb_9 = ~g.indexOf(",") ? g.replace(",", ".") : g;
                           total.value = nb_1 * nb_2 * nb_3 * nb_4 * nb_5 * nb_6 * nb_7 * nb_8 * nb_9; 	 
                           Number(total.value) = Number(nb_1)*Number(nb_2)*Number(nb_3)*Number(nb_4)*Number(nb_5)*Number(nb_6)*Number(nb_7)*Number(nb_8)*Number(nb_9);   
                           } 
                           else
                           {
                           alert('Vous n\'avez pas entre de nombre ou leur valeur est nulle');
                           }
                        }
                        else{
                           y = 1;
                           x = 1;
                           total = 0;
                            for (i=1;i<=9;i++){
                              x = document.getElementById('nb'+i).value;
                              if((typeof(x) === 'number' || typeof(x) === 'string') && x !== '' && !isNaN(x)){
                                total = total + (x*y)*1.0;
                                y = x;
                              }
                            }
                            alert(total);
                        }
                        
                        • Partager sur Facebook
                        • Partager sur Twitter
                          28 novembre 2011 à 15:40:19

                          Salut, il te suffit de regarder la console de débug pour voir que le script n'est pas interprété, la raison : il manque simplement une accolade } pour fermer ta fonction
                          • Partager sur Facebook
                          • Partager sur Twitter
                            28 novembre 2011 à 15:44:22

                            J'ai mal fais le copier coller.
                            Le problème vient d'autres part je crois.


                            • Partager sur Facebook
                            • Partager sur Twitter
                              28 novembre 2011 à 16:00:34

                              firebug me dis : "calcul is not defined". Ce qui signifie que ton html ne sais pas ou trouver le javascript que tu tente d'appeller !!!!
                              • Partager sur Facebook
                              • Partager sur Twitter
                              Never Trust User Input This is the truth
                                28 novembre 2011 à 16:07:26

                                J'ai refait le code, voilà le résultat s'affiche, sauf 2x2=512 ??

                                Merci pour votre aide.

                                function calcul()
                                { 
                                 var x = document.getElementById('nb1').value;
                                 var y = document.getElementById('nb2').value;
                                 var a = document.getElementById('nb3').value; 
                                 var b = document.getElementById('nb4').value; 
                                 var c = document.getElementById('nb5').value; 
                                 var d = document.getElementById('nb6').value; 
                                 var e = document.getElementById('nb7').value; 
                                 var f = document.getElementById('nb8').value;
                                 var g = document.getElementById('nb9').value;
                                 var total = document.getElementById('total');
                                   if(x != 0 && y != 0 && a != 0 && b != 0 && c != 0 && d != 0 && e != 0 && f != 0 && g != 0) 
                                   {
                                   var nb_1 = ~x.indexOf(",") ? x.replace(",", ".") : x;
                                   var nb_2 = ~y.indexOf(",") ? y.replace(",", ".") : y;
                                   var nb_3 = ~a.indexOf(",") ? a.replace(",", ".") : a;   
                                   var nb_4 = ~b.indexOf(",") ? b.replace(",", ".") : b;   
                                   var nb_5 = ~c.indexOf(",") ? c.replace(",", ".") : c;   
                                   var nb_6 = ~d.indexOf(",") ? d.replace(",", ".") : d;   
                                   var nb_7 = ~e.indexOf(",") ? e.replace(",", ".") : e;   
                                   var nb_8 = ~f.indexOf(",") ? f.replace(",", ".") : f;
                                   var nb_9 = ~g.indexOf(",") ? g.replace(",", ".") : g;
                                   total.value = nb_1 * nb_2 * nb_3 * nb_4 * nb_5 * nb_6 * nb_7 * nb_8 * nb_9; 	 
                                   Number(total.value) = Number(nb_1)*Number(nb_2)*Number(nb_3)*Number(nb_4)*Number(nb_5)*Number(nb_6)*Number(nb_7)*Number(nb_8)*Number(nb_9);   
                                   } 
                                   else
                                   {
                                   y = 1;
                                   x = 1;
                                   total = 0;
                                    for (i=1;i<=9;i++){
                                      x = document.getElementById('nb'+i).value;
                                      if((typeof(x) === 'number' || typeof(x) === 'string') && x !== '' && !isNaN(x)){
                                        total = total + (x*y)*1.0;
                                        y = x; 
                                   }}}
                                   {
                                   alert('Vous n\'avez pas entre de nombre ou leur valeur est nulle');
                                   }
                                }
                                
                                • Partager sur Facebook
                                • Partager sur Twitter
                                  28 novembre 2011 à 16:13:38

                                  ok bon :

                                  Vire ta fonction calcul (sauvegarde la dans un txt)
                                  et remplace par cette fonction calcul....
                                  function calcul (){
                                     y = 1;
                                     x = 1;
                                      for (i=1;i<=9;i++){
                                        x = document.getElementById('nb'+i).value;
                                        if((typeof(x) === 'number' || typeof(x) === 'string') && x !== '' && !isNaN(x)){
                                          y = (y*x)*1.0;
                                        }
                                      }
                                      alert(total);
                                  }
                                  
                                  • Partager sur Facebook
                                  • Partager sur Twitter
                                  Never Trust User Input This is the truth
                                    28 novembre 2011 à 16:23:21

                                    D'accord, y'a un popup et 1x1 donne 28.

                                    1\ là ou il faut coché le nombre ne se rajoute pas dans le résultat. Genre 2x2 et j'ai coché gris et argent donc 2x2x2x2.

                                    2\ Est ce qu'il est possible de virer le popup?

                                    3\ Y'a toujours le problème du résultat mais cava on suit le bon chemin.

                                    Merci hani!
                                    • Partager sur Facebook
                                    • Partager sur Twitter
                                      28 novembre 2011 à 16:31:11

                                      Essaye ça a la place de l'autre
                                      function calcul (){
                                         y = 1;
                                         x = 1;
                                         total = 0;
                                          for (i=1;i<=9;i++){
                                            x = document.getElementById('nb'+i).value;
                                            if (i <= 2 || document.getElementById('nb'+i).checked ){
                                              if((typeof(x) === 'number' || typeof(x) === 'string') && x !== '' && !isNaN(x)){
                                                total = total + (x*y)*1.0;
                                                y = x;
                                              }
                                            }
                                          }
                                          document.getElementById('total').value = total;
                                      }
                                      
                                      • Partager sur Facebook
                                      • Partager sur Twitter
                                      Never Trust User Input This is the truth
                                        28 novembre 2011 à 16:39:50

                                        On s'approche je te remercie, mais reste un souci : 2x2 = 6 saurais tu pourquoi?
                                        • Partager sur Facebook
                                        • Partager sur Twitter
                                          28 novembre 2011 à 17:43:13

                                          J'ai édité le code juste au dessus !!! essaye le
                                          • Partager sur Facebook
                                          • Partager sur Twitter
                                          Never Trust User Input This is the truth
                                            28 novembre 2011 à 17:46:22

                                            Y'a de nouveau le popup et aucun résultat s'affiche.


                                            merci
                                            • Partager sur Facebook
                                            • Partager sur Twitter
                                              28 novembre 2011 à 17:52:10

                                              function calcul (){
                                                 y = 1;
                                                 x = 1;
                                                  for (i=1;i<=9;i++){
                                                    x = document.getElementById('nb'+i).value;
                                                    if (i <= 2 || document.getElementById('nb'+i).checked ){
                                                      if((typeof(x) === 'number' || typeof(x) === 'string') && x !== '' && !isNaN(x)){
                                                       y = (x*y)*1.0;
                                                      }
                                                    }
                                                  }
                                                  document.getElementById('total').value = y;
                                              }
                                              


                                              EDIT : autant pour moi j'ai pas du valider quand j'ai modifié voici le bon !!! (heure de l'edit pour correction d'une faute que je pensais avoir corrigé au dessus : 17h55
                                              • Partager sur Facebook
                                              • Partager sur Twitter
                                              Never Trust User Input This is the truth
                                                28 novembre 2011 à 17:55:00

                                                Merci
                                                Mais 2x2=6 saurais tu régler sa? après c'est bon je te laisse pour se soir. merci
                                                • Partager sur Facebook
                                                • Partager sur Twitter
                                                  28 novembre 2011 à 17:56:42

                                                  c'est fait j'ai edité mon post juste apres ton passage
                                                  • Partager sur Facebook
                                                  • Partager sur Twitter
                                                  Never Trust User Input This is the truth
                                                    28 novembre 2011 à 18:00:15

                                                    Merci beaucoup! Franchement tu t'y connais énormément merci!

                                                    • Partager sur Facebook
                                                    • Partager sur Twitter

                                                    Multiplié plusieurs truc en même temps.

                                                    × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                                                    × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                                                    • Editeur
                                                    • Markdown