【问题标题】:allocation of amount to different fields javascript将金额分配给不同的字段javascript
【发布时间】:2012-07-20 13:20:15
【问题描述】:

我有问题,其实至少我不知道怎么解决。我有几个字段显示不同的数量,每个位置都由一个 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>

突然之间,我不知道,因为每次我都没有到达更多的情况下。

提前感谢所有可以帮助我进步的人。

此致。

【问题讨论】:

  • 您的问题到底是什么?您是否没有收到正确的值,或者您的逻辑没有将值移动到正确的字段?
  • 事实上,正如你在这张图片上看到的,我有很多不同的字段,developpez.net/forums/attachments/p99396d1342770574/… 当有人付款时,我有一个订单输入,例如,如果有人付款 25000 它必须在所有文件之间分配 25000,直到输入中给出的金额等于 0。例如,如果我有 p1=300 和 p2 = 150 和 p3 = 75 并且我有 465 欧元的付款,则重新分配将是 300 p1 150 为 p2 和 15 为 p3 和 p3 上的剩余量将是 60
  • 所以你的逻辑没有正确分配这些值。您的变量名称有点难以理解。 honoraires 是什么?它是在哪里定义的?
  • 荣誉实际上是一个错误。它不会在那里使用事实上我有一个输入来写付款,我想在所有这篇文章之间分配付款我会做另一个例子。右侧的表格中写有剩余的原始金额,右侧写有将在那里估算的金额。例如,如果我们一开始有 I= 推算 L = 还剩 I=0 / L 150 I=0 / L 50 I=0 / L 25 并且我有 220 的付款,那将是 I=150 / L= 0 I=50 / L= 0 I=20 / L= 5
  • 这里还有一张图解释developpez.net/forums/…

标签: javascript field allocation


【解决方案1】:

据我了解此问题,用户输入了付款金额,然后此金额将应用于订单上的订单项。

输入:17100

第 1 项:&lt;input id="p1" class="items" value="16000.00 €"/&gt;

第 2 项:&lt;input id="p1" class="items" value="535.00 €"/&gt;

第 3 项:&lt;input id="p1" class="items" value="955.00 €"/&gt;

 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 匹配并且这是未经测试的,因此其中很可能存在一两个错误。

【讨论】:

  • 它告诉我 items[i] = document.getElementById("p" + (i+1)).value;未捕获的类型错误:无法读取 null 的属性“值”
  • 查看getItems 函数的更新并为所有订单项输入元素添加了类。这应该会照顾它。
  • 来吧兄弟,我实际上是为你写的。给我一个答案检查。
  • 感谢您的帮助,它告诉我Uncaught ReferenceError: item is not defined index.php:506 payment index.php:506 onblur
  • 我在这里改变了 { var temp = items[i] - payAmt; if(temp > 0) { items[i] = temp;休息; } else if(temp
猜你喜欢
  • 2015-11-05
  • 1970-01-01
  • 2017-10-22
  • 1970-01-01
  • 1970-01-01
  • 2013-09-22
  • 2015-12-22
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多