1

私はローダーのjavascriptで機能を実行して、支持者キャビネットの料金を計算しました。

彼らは私にこれをするように頼みます。実際、それはファイルの量に比例します。そしてdegressifです。

量が多いほど、パーセンテージは少なくなりますが、それぞれについて.

実際、最初の支払いがない場合は問題なく計算されます。支払いを登録しても何も表示されず、コンソールにエラーの間違いはありません。

これが私が行った機能です。

<script type="text/javascript">

function hono(p1,p2,p3,p4,t1,t2,t3,type,versement,montantacompte)
     {
         var p1             = 5000.00;
         var p2             = 5000.01;
         var p3             = 8000.00;
         var p4             = 8000.01;
         var t1             = 17.00;
         var t2             = 10.00;
         var t3             = 6.00;
         var type           = "d";
         var versement      = 150.00;
         var montantacompte = document.getElementById("montantacompte").value;


         if (type== "d")
            {
                if(versement== 0.00 && montantacompte <= p1)
                {
                    reste1= montantacompte;
                    pc= t1/100;
                    taux1= pc+1;
                    h1=((reste1*taux1)-reste1);
                    honoraires=h1;
                    document.getElementById('taux-1').value=t1;
                    document.getElementById('palier1').value=Math.round(h1*100)/100;
                    document.getElementById('sommehonoraires').value=Math.round(honoraires*100)/100;
                }
                else if(versement < p1 && (versement + montantacompte) <= p1)
                {
                    reste1= montantacompte;
                    pc= t1/100;
                    taux1= pc+1;
                    h1= (reste1*taux1)-reste1;
                    honoraires= h1;
                    document.getElementById('taux-1').value=t1;
                    document.getElementById('palier1').value=Math.round(h1*100)/100;
                    document.getElementById('sommehonoraires').value=Math.round(honoraires*100)/100;
                }
                else if(versement <= p1 && (versement+montantacompte)>= p2 && (versement+montantacompte)<=p3)
                {
                    reste1=p1-versement;
                    pc=t1/100;
                    taux1=pc+1;
                    h1=(reste1*taux1)-reste1;
                    reste2=montantacompte-reste1;
                    pc2=t2/100;
                    taux2=pc2+1;
                    h2=(reste2*taux2)-reste2;
                    honoraires=h1+h2;
                    document.getElementById('taux-1').value=t1;
                    document.getElementById('palier1').value=Math.round(h1*100)/100;
                    document.getElementById('taux-2').value=t2;
                    document.getElementById('palier2').value=Math.round(h2*100)/100;
                    document.getElementById('sommehonoraires').value=Math.round(honoraires*100)/100;
                }
                else if (versement==0.00 && montantacompte>=p2 && montantacompte <=p3)
                {
                    reste2=montantacompte-p1;
                    reste1=p1;
                    pc=(t1/100);
                    taux1=pc+1;
                    h1=((reste1*taux1)-reste1);
                    pc2=(t2/100);
                    taux2=pc2+1;
                    h2=((reste2*taux2)-reste2);
                    honoraires=(h1+h2);
                    document.getElementById('taux-1').value=t1;
                    document.getElementById('palier1').value=Math.round(h1*100)/100;
                    document.getElementById('taux-2').value=t2;
                    document.getElementById('palier2').value=Math.round(h2*100)/100;
                    document.getElementById('sommehonoraires').value=Math.round(honoraires*100)/100;
                }
                else if(versement<=p3 && versement>=p2 && (versement+montantacompte)>=p2 && (versement+montantacompte)<=p3)
                {
                reste1=montantacompte;
                pc=(t2/100);
                taux1=pc+1;
                h1=((reste1*taux1)-reste1);
                honoraires=h1;  
                document.getElementById('taux-1').value=t1;
                document.getElementById('palier1').value=Math.round(h1*100)/100;
                document.getElementById('sommehonoraires').value=Math.round(honoraires*100)/100;
                }
                else if(versement>=p2 && versement<=p3 && (versement+montantacompte)>=p4)
                {
                reste1=p4-versement;
                pc=(t2/100);
                taux2=pc+1;
                h2=((reste1*taux2)-reste1);
                reste2=montantacompte-reste1;
                pc2=(t3/100);
                taux3=pc2+1;
                h3=((reste2*taux3)-reste2);
                honoraires=(h2+h3);
                document.getElementById('taux-3').value=t3;
                document.getElementById('palier3').value=Math.round(h3*100)/100;
                document.getElementById('taux-2').value=t2;
                document.getElementById('palier2').value=Math.round(h2*100)/100;
                document.getElementById('sommehonoraires').value=Math.round(honoraires*100)/100;
            }
            else if(versement==0.00 && montantacompte>=p4)
            {
                reste1=p1;
                reste2=p3-p2;
                pc=(t1/100);
                taux1=pc+1;
                h1=((reste1*taux1)-reste1);
                pc2=(t2/100);
                taux2=pc2+1;
                h2=((reste2*taux2)-reste2);
                reste3=(montantacompte-reste1-reste2);
                pc3=(t3/100);
                taux3=pc3+1;
                h3=((reste3*taux3)-reste3);
                honoraires=(h1+h2+h3);
                document.getElementById('taux-1').value=t1;
                document.getElementById('palier1').value=Math.round(h1*100)/100;
                document.getElementById('taux-2').value=t2;
                document.getElementById('palier2').value=Math.round(h2*100)/100;
                document.getElementById('taux-3').value=t3;
                document.getElementById('palier3').value=Math.round(h3*100)/100;
                document.getElementById('sommehonoraires').value=Math.round(honoraires*100)/100;
            }
        else if(versement>=p4)
            {
                reste3=montantacompte;
                pc3=(t3/100);
                taux3=pc3+1;
                h3=((reste3*taux3)-reste3);
                honoraires=(h3);

                document.getElementById('taux-3').value=t3;
                document.getElementById('palier3').value=Math.round(h3*100)/100;
                document.getElementById('sommehonoraires').value=Math.round(honoraires*100)/100;
            }
        }
        if (type=="l")
        {
        pc1=(t1/100);
        taux1=pc1+1;
        honoraires=montantacompte*taux1;
        document.getElementById('taux-1').value=t1;
        document.getElementById('palier1').value=Math.round(h1*100)/100;
        document.getElementById('sommehonoraires').value=Math.round(honoraires*100)/100;
        }
    </script>

また、すべての関数は大文字if(versement== 0.00 && montantacompte <= p1)と小文字を使用しelse if(versement < p1 && (versement + montantacompte) <= p1)、最後まで使用します。

なぜ機能しないのかわかりません。

4

1 に答える 1

1

以下を置き換えて、それを「修正」してみてください。

var montantacompte = document.getElementById("montantacompte").value;

var montantacompte = parseFloat(document.getElementById("montantacompte").value);

タイプに混乱があるようです-フィールド値を取得すると、それは文字列であるため、他の操作((versement + montantacompte)など)は数値ではなく文字列で実行されます。

于 2012-08-28T08:15:21.690 に答える