0

我有一个问题,其实至少我不知道怎么做。我有几个字段显示不同的数量,每个位置由一个 id 示例标识:p1、p2、p3 等......

因此,此字段包含十进制形式的金额。

我想做什么。因为实际上我将被引导分配在一个存款字段中输入的金额。

就是说只要存款金额>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 匹配并且这是未经测试的,因此其中很可能会出现一两个错误。

于 2012-07-20T15:54:15.483 回答