Probleme en javascript!!!!!!!!!!!

Résolu
Bonjour,

Je suis novice en programmation javascripte, et jaimerai trouver une solution a un probléme ke j'ai rencontré.
En fait, ma page est constitée d'un formulaire où l'utilisateur doit entrer des information qui seront traités vià une fonction Traiter()qui afficherai le traitement dans un tableau dans la meme page sans écraser le formulaire grace a l'evennement onclick .
si une personne a la solution jaimerai bien qu'il m'éclaire le plutot possible car c une application a rendre dans 2 jours.
Merci d'avance.
Configuration: Windows Vista
Internet Explorer 7.0

30 réponses

Résumé de la discussion

Une demande porte sur l’affichage du traitement d’un formulaire JavaScript dans un tableau sur la même page, sans écraser le formulaire, et déclenché par l’événement onclick. La meilleure contribution montre un code qui construit et affiche le tableau via document.write dans Traiter(), puis met à jour des valeurs comme la Date, la Mensualité et le Total restants. Cependant, utiliser document.write après chargement efface la page et écrase le formulaire; il est préférable de manipuler le DOM en ajoutant des lignes à un tableau existant. Des échanges ultérieurs invitent à préciser le formulaire et le tableau à générer, et plusieurs répondants suggèrent d’éviter document.write au profit d’un affichage dynamique par DOM.

Bobot (l’IA à votre service)
  1. en fait c'est des urls de cours, il ya pleins de liens et ça me prendra une éternitée a fouiller .
    si une personne a une solution claire et directe sous la mais ça serai bien :)
    1. Ba ça dépend...

      Tu peux nous en dire plus sur le formulaire et sur le tableau à dresser ?
  2. en fait c'est un formpulaire où tu mets le montant d'un crédit, le nombre de mois (periode de remboursement), le taux d'interet et la date de la premiére échéance.
    en clickant sur valider un tableau doit etre affiché en dessous du formulaire avec les dates de versement, le montant restant.....
    le probléme c que ça marche mais ça écrase le formulaire.
    1. //ceci est le code html de l'interface

      <body bgcolor=#99CCFF text =#000066>

      <form name ="Mafich">

      <pre> <b> Montant du Crédit : </b> <input type="text name="txtMnt" > Dt </pre><br/> <br/>

      <pre><p> <b> Nombre de Mois : </b> <input type="text" name="txtNb" > Mois </pre><br/> <br/>

      <pre> <b> Taux : </b> <input type="text" name="txtTo" > % </pre><br/> <br/>

      <pre> <b> Date de la premiere écheance : </b> <input type="text" name="txtDat" > </pre><br/> <br/>

      <pre> <input type="button" name="Valid" value= "Valider" onClick="Traiter()"> <input type="reset"

      name="Rest" value="Annuler"> </pre>

      </form>

      </body>
      1. // fonction traiter()

        function Traiter()
        {

        var i =1;
        var tableau = new Array();

        credInt= parseFloat(document.forms["Mafich"].txtMnt.value) * ( (parseFloat(document.forms["Mafich"].txtTo.value)/100)+1);
        mens= parseInt( credInt/parseInt(document.forms["Mafich"].txtNb.value));

        var restant = credInt;
        var pTotal = 0;

        //partie affichage
        document.write("<table border=\"1\" bordercolor=\"#000066\" >");
        document.write("<tr>");
        document.write("<td height=\"50\" width=\"300\" >"+"Date de versement"+"</td>");
        document.write("<td height=\"50\" width=\"300\" >"+"Mensualité"+"</td>");
        document.write("<td height=\"50\" width=\"300\" >"+"Total Restant"+"</td>");
        document.write("<td height=\"50\" width=\"300\" >"+"Total Remboursé"+"</td>");

        dtj= getD(document.forms["Mafich"].txtDat.value);

        while (i< parseInt(document.forms["Mafich"].txtNb.value))
        {
        restant= restant-mens;
        pTotal=pTotal+mens;

        document.write("<tr>");
        document.write("<td height=\"50\" width=\"300\" >"+getDateCompact(dtj)+"</td>");
        document.write("<td height=\"50\" width=\"300\" >"+mens+"</td>");
        document.write("<td height=\"50\" width=\"300\" >"+restant+"</td>");
        document.write("<td height=\"50\" width=\"300\" >"+pTotal+"</td>");

        i++;

        }

        }

        //getD= retourne la date de la zone de saisie en la covertissant en type date
        //getcompact..() retourne la date sous format 12/12/2008 par exemple.
        1. Rajoutes ça à la fin pour commencer :
          document.write("</tr>");
          document.write("</table>");

          Histoire de fermer le tableau.
          1. Bon... Je sais que je suis chaint, mais histoire d'aller plus vite, essayes de mettre TOUT ton code, HTML et JAVAscript
            1. html>

              <head>

              <script type="text/javascript">

              var dtj= new Date();
              var credInt=0;
              var mens=0;

              function bissext(dt)

              {

              if((dt.getFullYear() % 4 == 0)&&(dt.getFullYear() % 100 !=0))
              {
              if (dt.getFullYear() % 400 ==0)
              return true;
              else
              return false;

              }
              else
              return false;

              }

              function getDateCompact(dt)

              {
              var y = dt.getFullYear();

              var m = dt.getMonth()+1;

              if (m<10)
              {
              m="0"+m;

              }
              var d = dt.getDate();
              if(d<10)
              {d="0"+d;}

              return d+"/"+m+"/"+y;
              }

              function getD(da)
              {
              window.alert("Nos produits sont en general non perimes");
              var day = da.substring(0,2);

              var month = da.substring(3,5);
              var year = da.substring(6,10);
              var d = new Date();

              d.setDate(day);
              d.setMonth(month);
              d.setFullYear(year);
              return d;
              }

              function Info()
              {
              window.alert("Nos produits sont en general non perimes");
              window.alert(document.forms["Mafich"].txtMnt.value);

              }

              function Traiter()
              {

              var i =1;

              credInt= parseFloat(document.forms["Mafich"].txtMnt.value) * ( (parseFloat(document.forms["Mafich"].txtTo.value)/100)+1);
              mens= parseInt( credInt/parseInt(document.forms["Mafich"].txtNb.value));

              var restant = credInt;
              var pTotal = 0;

              //partie affichage

              document.write("<table border=1 bordercolor='#333399'>");
              document.write("<tr>");
              document.write("<td height=50 width=300 >"+"Date de versement"+"</td>");
              document.write("<td height=50 width=300 >"+"Mensualité"+"</td>");
              document.write("<td height=50 width=300 >"+"Total Restant"+"</td>");
              document.write("<td height=50 width=300 >"+"Total Remboursé"+"</td>");
              document.write("</tr>");

              document.write("</table>");

              dtj= getD(document.forms["Mafich"].txtDat.value);

              while (i<= parseInt(document.forms["Mafich"].txtNb.value))
              {

              restant= restant-mens; ////partie
              pTotal=pTotal+mens;
              window.alert(restant); ////traitement

              i++; //encore inachevée
              }

              }

              </script>

              </head>

              <body text =#000066>

              <form name ="Mafich">

              <pre> <b> Montant du Crédit : </b> <input type="text" name="txtMnt" > Dt </pre><br/> <br/>

              <pre><p> <b> Nombre de Mois : </b> <input type="text" name="txtNb" > Mois </pre><br/> <br/>

              <pre> <b> Taux : </b> <input type="text" name="txtTo" > % </pre><br/> <br/>

              <pre> <b> Date de la premiere écheance : </b> <input type="text" name="txtDat" > </pre><br/> <br/>

              <pre> <input type="button" name="Valid" value= "Valider" onClick="Traiter()"> <input type="reset" name="Rest" value="Annuler"> </pre>

              <layer width="200" height="115" left="193" top="84" bgcolor="#666666">
              Contenu du calque.
              </layer>

              </form>

              </body>

              </html>
              1. Voilà qui marche déjà un peu mieux :

                <html>
                
                <head>
                <script type="text/javascript">
                
                var dtj= new Date();
                var credInt=0;
                var mens=0;
                
                
                
                function bissext(dt)
                
                {
                
                if((dt.getFullYear() % 4 == 0)&&(dt.getFullYear() % 100 !=0))
                {
                if (dt.getFullYear() % 400 ==0)
                return true;
                else
                return false;
                
                }
                else
                return false;
                
                }
                
                function getDateCompact(dt)
                
                {
                var y = dt.getFullYear();
                
                var m = dt.getMonth()+1;
                
                if (m<10)
                {
                m="0"+m;
                
                }
                var d = dt.getDate();
                if(d<10)
                {d="0"+d;}
                
                return d+"/"+m+"/"+y;
                }
                
                
                function getD(da)
                {
                window.alert("Nos produits sont en general non perimes");
                var day = da.substring(0,2);
                
                var month = da.substring(3,5);
                var year = da.substring(6,10);
                var d = new Date();
                
                
                d.setDate(day);
                d.setMonth(month);
                d.setFullYear(year);
                return d;
                }
                
                
                function Info()
                {
                window.alert("Nos produits sont en general non perimes");
                window.alert(document.forms["Mafich"].txtMnt.value);
                }
                
                function Traiter()
                {
                
                var i =1;
                var f = document.getElementById('resultat');
                
                credInt= parseFloat(document.forms["Mafich"].txtMnt.value) * ( (parseFloat(document.forms["Mafich"].txtTo.value)/100)+1);
                mens= parseInt( credInt/parseInt(document.forms["Mafich"].txtNb.value));
                
                var restant = credInt;
                var pTotal = 0;
                
                //partie affichage
                
                f.innerHTML = ("<table border=1 bordercolor='#333399'>");
                f.innerHTML = f.innerHTML + ("<tr>");
                f.innerHTML = f.innerHTML + ("<td height=50 width=300 >"+"Date de versement"+"</td>");
                f.innerHTML = f.innerHTML + ("<td height=50 width=300 >"+"Mensualité"+"</td>");
                f.innerHTML = f.innerHTML + ("<td height=50 width=300 >"+"Total Restant"+"</td>");
                f.innerHTML = f.innerHTML + ("<td height=50 width=300 >"+"Total Remboursé"+"</td>");
                f.innerHTML = f.innerHTML + ("</tr>");
                
                f.innerHTML = f.innerHTML + ("</table>");
                
                dtj= getD(document.forms["Mafich"].txtDat.value);
                
                while (i<= parseInt(document.forms["Mafich"].txtNb.value))
                {
                
                restant= restant-mens; ////partie
                pTotal=pTotal+mens;
                window.alert(restant); ////traitement
                
                i++; //encore inachevée
                }
                
                }
                
                </script>
                
                </head>
                <body text =#000066>
                
                <form name ="Mafich">
                
                <pre> <b> Montant du Crédit : </b> <input type="text" name="txtMnt" > Dt </pre><br/> <br/>
                <pre><p> <b> Nombre de Mois : </b> <input type="text" name="txtNb" > Mois </pre><br/> <br/>
                <pre> <b> Taux : </b> <input type="text" name="txtTo" > % </pre><br/> <br/>
                <pre> <b> Date de la premiere écheance : </b> <input type="text" name="txtDat" > </pre><br/> <br/>
                <pre> <input type="button" name="Valid" value= "Valider" onClick="Traiter()"> <input type="reset" name="Rest" value="Annuler"> </pre>
                <br /><br />
                <div id='resultat' width="200" height="115" left="193" top="84" bgcolor="#666666">
                Contenu du calque.
                </div>
                
                </form>
                
                </body>
                </html>
                1. T'es en de bonnes main dis donc, il assures le gars !!! Good job Scalpweb !
                  1. De rien.

                    Passe ce topic en tant que Résolu.
                2. désolée, j'étais pas devant mon ordi.. MERCI beaucoup Scalpweb !
                  1. De rien...

                    Mais si ça marche comme tu veux, passe ce topic en résolu.
                3. Mais tu sais le border et bordercolor ne son pas reconnues!!??? pourtant la syntaxe est juste!!
                  1. Autant pour moi :

                    f.innerHTML = ("<table style=\"border: 1px solid #333399; \">");
                    1. de toutes façons c déja un super résulat Merci infiniment scalpweb!!!
                      1. De rien encore une fois...

                        Mais j'insiste, place ce topic en résolu lorsque tout sera clair pour toi.

                        Tu as un petit formulaire pour faire ça au sommet du topic.

                        En tout cas, là, tout devrait marcher.
                    2. oui je sais je vais le fair maisf.innerHTML = ("<table style=\"border: 1px solid #333399; \">");
                      ===> ne marche pas :(
                      • 1
                      • 2