0

私には問題があります。実際、少なくとも方法がわかりません。私は、各位置がIDの例で識別される異なる量を明らかにするいくつかのフィールドを持っています:p1、p2、p3など...

したがって、このフィールドには金額が 10 進数形式で含まれます。

私が作りたいもの。実際には、預金であるフィールドに入力された金額を割り当てるように導かれるからです。

つまり、デポジット額が > 0 である限り、さまざまなポストに分散します

たとえば、私が持っているとしましょう

 300 = p1, p2 and p3 = 120 = 50
and I have a deposit for an amount of 450 Euros, so I would
p1 = 0 and o1 fields (fields that is revealing what has been imputed) 300
p2 = 0 and the fields 120 o2
p3 = 20 fields and o3 = 30

実際に色々な条件で試してみたのですが、ブラシが絡まりました。

これはそれが与えたものです:

<script type="text/javascript">
  function ventilation()
 {
 var montantacompte = document.getElementById("montantacompte").value;
 var p1             = document.getElementById("p1").value;
 var p2             = document.getElementById("p2").value;  
 var p3             = document.getElementById("p3").value;  
 var p4             = document.getElementById("p4").value;   
 var p5             = document.getElementById("p5").value;      
 var p7             = document.getElementById("p7").value;                  
 var p8             = document.getElementById("p8").value;   
 var p9             = document.getElementById("p9").value;   
 var p10            = document.getElementById("p10").value; 
 var p11            = document.getElementById("p11").value;   
 var p12            = document.getElementById("p12").value;  
 var p13            = document.getElementById("p13").value;


    if(p1>0 &&p1-montantacompte>=0)
     {

         f1=p1-montantacompte;
         document.getElementById('p1').value=f1;
         document.getElementById('o1').value=Math.round(montantacompte*100)/100;
     }
        if(p1>0 &&p1-montantacompte<=(p1+p2))
     {
         reste1=montantacompte-p1;
         impute=p1;
         impute2=reste1;
         f1=m1-impute;
         document.getElementById('p1').value=f1;
         document.getElementById('o1').value=Math.round(impute*100)/100;
         document.getElementById('o2').value=Math.round(impute2*100)/100;

     }

 }
</script>

私もループを試してみましたが、もつれたブラシもありました.javascriptに関する私の小さな知識は役に立ちません.

<script type="text/javascript">
  function ventilation()
 {
 var reste          = document.getElementById("montantacompte").value;
 var ac             = document.getElementById("montantacompte").value;
 var p1             = document.getElementById("p1").value;
 var p2             = document.getElementById("p2").value;  
 var p3             = document.getElementById("p3").value;  
 var p4             = document.getElementById("p4").value;   
 var p5             = document.getElementById("p5").value;      
 var p7             = document.getElementById("p7").value;                  
 var p8             = document.getElementById("p8").value;   
 var p9             = document.getElementById("p9").value;   
 var p10            = document.getElementById("p10").value; 
 var p11            = document.getElementById("p11").value;   
 var p12            = document.getElementById("p12").value;  
 var p13            = document.getElementById("p13").value;
 var c              = 1;
 while(reste>0 && c<13)
 {
     if(reste> 'p'+c)
     {
         reste = 'p'+c -  ac;
         document.getElementById('p'+c).value=Math.round(honoraires*100)/100;
         print reste;
     }
 }

</script>

どちらの場合も、到着するたびに前進するわけではないので、突然、わかりません。

事前に、私が進歩するのを手伝ってくれるすべての人に感謝します.

敬具。

4

1 に答える 1

1

私はこの問題を理解しているので、ユーザーが支払い金額を入力すると、この金額が注文の項目に適用されます。

入力: 17100

項目 1: <input id="p1" class="items" value="16000.00 €"/>

項目 2: <input id="p1" class="items" value="535.00 €"/>

項目 3: <input id="p1" class="items" value="955.00 €"/>

 function getItems()
 {
 var items = new Array();
 var itemCount = document.getElementsByClassName("items");

 for(var i = 0; i < itemCount.length; i++)
 {
     items[i] = document.getElementById("p" + (i+1)).value;
 }

 return items;
 }

 function setItems(items,payAmt)
 {
   document.getElementById("inputField").value = payAmt;
   for(var i = 0; i < items.length; i++)
   {
      document.getElementById("p" + (i+1)).value = items[i];
   }
 }

 function itemSum(items)
 {
var sum = 0;

for(var i=0; i < items.length; i++)
{
    sum = items[i] + sum;
}

return sum;
 }

 function payment(inputElm)
 {
 var items = getItems();
 var payAmt = document.getElementById("inputField").value;
 var i = 0;
 var sum = itemSum(items);

 while(payAmt != 0 && sum != 0)
 {
     var temp = items[i] - payAmt;
     if(temp > 0)
     {
         items[i] = temp;
         break;
     }
     else if(temp < 0)
     {
         items[i] = 0;
         payAmt = temp*-1;
      }
     i++;
     sum = itemSum(items);
 }

  setItems(items, payAmt);
 }

あなたの問題を正しく理解していれば、それでいいと思います。ID が一致していることを確認する必要がありますが、これはテストされていないため、1 つまたは 2 つのバグが存在する可能性が高くなります。

于 2012-07-20T15:54:15.483 に答える